在c ++中,人们可以简单地做这样的事情:
struct GraphObject {
Color color;
double value;
String name;
};
然而在Java中,我不能简单地这样做,我只看到为此创建一个类作为选项。我不喜欢的是那时我需要拖动GraphObject.java和Graph.java(因为Graph将保存GraphObject的ArrayList。有没有办法将对象类放入Graph.java或者这根本不可能/糟糕的做法?
由于
答案 0 :(得分:7)
如果适合您的设计,您可以将其设为nested class。
答案 1 :(得分:6)
您需要创建一个静态嵌套类:
public class Graph { static class GraphicObject { Color color; double value; String name; } }
如果省略static
关键字,Graph的每个实例都会自动创建一个GraphicObject实例。此外,引用将绑定在一起,允许使用this
对外部类进行合成访问。很少需要非静态(内部)类,并且会给对象创建增加很多成本。
有关静态和非静态嵌套类之间差异的更多信息:http://blogs.oracle.com/darcy/entry/nested_inner_member_and_top
答案 2 :(得分: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
}
答案 3 :(得分:1)
你可以做到。如果这是您使用该课程的唯一文件,则不是问题。如果你在其他文件中使用它,它仍然可以工作,但它不被认为是好的做法。
通常你会以inner class来表达。