结构如何在Java中运行?

时间:2010-09-16 21:54:40

标签: java

在c ++中,人们可以简单地做这样的事情:

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

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

由于

4 个答案:

答案 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来表达。