gpt4 book ai didi

java - Java中的结构类对象

转载 作者:IT老高 更新时间:2023-10-28 12:17:56 24 4
gpt4 key购买 nike

创建类似结构的对象是不是完全违背了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();
}

最佳答案

似乎很多 Java 人不熟悉 Sun Java 编码指南这说当类是使用公共(public)实例变量是非常合适的本质上是一个“结构”,如果 Java 支持“结构”(当没有行为时)。

人们倾向于认为 getter 和 setter 是 Java 的方式,就好像它们是 Java 的核心一样。事实并非如此。如果您遵循 Sun Java编码指南,在适当的情况下使用公共(public)实例变量,实际上,您编写的代码比用不必要的 getter 和 setter 弄乱它更好。

从 1999 年开始的 Java 代码约定并没有改变。

10.1 提供对实例和类变量的访问

不要在没有正当理由的情况下公开任何实例或类变量。通常,不需要显式设置或获取实例变量——这通常是方法调用的副作用。

适当的公共(public)实例变量的一个例子是类本质上是一个数据结构,没有行为。 换句话说,如果您使用的是结构体而不是类(如果 Java 支持结构体),那么将类的实例变量公开是合适的

http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-137265.html#177

http://en.wikipedia.org/wiki/Plain_old_data_structure

http://docs.oracle.com/javase/1.3/docs/guide/collections/designfaq.html#28

关于java - Java中的结构类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com