2010-09-16 65 views
1

在C++中,一个可以简单地做这样的事情:结构在Java中如何工作?

struct GraphObject { 
Color color; 
double value; 
String name; 
}; 

但是在Java中,我不能简单地做到这一点,我只看到刚刚创建这个类作为一个选项。我不喜欢的是,那么我需要拖动GraphObject.java和Graph.java(因为Graph将保存GraphObject的ArrayList。是否有办法将对象类放入Graph.java中,或者这是不可能的/糟糕的做法?

感谢

回答

1

你可以做到这一点。如果这是你使用这个类中唯一的文件,这不是一个问题。如果你在其他文件中使用它,它仍然可以工作,但它不被认为是好的做法。

通常你'd做它作为inner class

+1

因为他可能并不需要从'GraphObject'内使用'Graph',定期嵌套类优于一个内部类。 – Gabe 2010-09-16 22:02:13

+2

其实你会使用静态嵌套类,因为嵌套类很少需要访问封闭类的成员。 – helpermethod 2010-09-16 22:02:25

3

如果您想要,您可以在另一个班级内制作班级。

class Graph { 

    class GraphicObject { 
     Color color; 
     double value; 
     String name; 

     // You can omit this, and treat it just like a struct if you want 
     GraphicObject(Color c, Double b, String n) { 
      // ... 
     } 
    } 

    List<GraphicObject> myObjects(); 
    // other things about Graph here, as normal 

} 
6

你会希望做一个Static Nested Class和

 
public class Graph { 
    static class GraphicObject { 
     Color color; 
     double value; 
     String name; 
    } 
} 

如果省略了static关键字,图的每个实例会自动创建GraphicObject的一个实例。此外,参考文献将被捆绑在一起,允许使用this对外部类进行综合访问。非静态(内部)类很少需要,并且会为创建对象添加大量成本。

有关静态和非静态嵌套类之间差异的详细信息:http://blogs.oracle.com/darcy/entry/nested_inner_member_and_top