结构类似Java中的对象

问题:

是完全反对Java的方式来创建结构像对象吗?

class SomeData1 {
    public int x;
    public int y;
}

我可以看到一个类与访问器和变异器是更像Java的类。

class SomeData2 {
    int getX();
    void setX(int x);

    int getY();
    void setY(int y);

    private int x;
    private int y;
}

第一个例子中的课程是非常方便的。

// a function in a class
public int f(SomeData1 d) {
    return (3 * d.x) / d.y;
}

这不是那么方便。

// a function in a class
public int f(SomeData2 d) {
    return (3 * d.getX()) / d.getY();
}

回答:

这是一个常见的话题。在对象中创建公共字段的缺点是您无法控制对其设置的值。在有很多程序员使用相同代码的组合项目中,避免副作用很重要。此外,有时最好返回一个字段的对象副本或者以某种方式转换它。你可以在测试中模拟这些方法。如果您创建一个新类,您可能看不到所有可能的操作。这就像防御性编程 – 有一天,getters和setter可能是有帮助的,创建/使用它们并不花费很多。所以他们有时是有用的。
在实践中,大多数领域都有简单的吸气剂和搅拌器。一个可能的解决方案如下所示:

public property String foo;   
a->Foo = b->Foo;

 Update: It’s highly unlikely that property support will be added in Java 7 or perhaps ever. Other JVM languages like Groovy, Scala, etc do support this feature now. – Alex Miller

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Struct like objects in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

93 − 92 =