【发布时间】:2016-12-24 02:17:09
【问题描述】:
我是 Java 的初学者。我有一个问题。
Foo.java
public class Foo {
private String name;
private int num;
Foo(String name, int num) {
this.name = name;
this.num = num;
}
public String getName() {
return this.name;
}
public int getNum() {
return this.num;
}
public void setName(String name) {
this.name = name;
}
public void setNum(int num) {
this.num = num;
}
}
Main.java
public class Main {
public static void main(String[] args) {
String name = "Tom";
int num = 60;
Foo bar = new Foo(name, num);
}
}
我想使用getter() 和setter() 方法设置和获取实例属性,而不是Java 上的这种典型样式...
public void setter(String p) {
this.p = p;
}
public String getter(String q) {
return this.q
}
我知道这些不起作用,但我想编写 Java 方法,例如在 Python 中遵循这些代码。
setattr(self, key, val)
getattr(self, key)
你能给我一些建议吗?
【问题讨论】:
-
你想给
setter方法输入任何值吗? -
您能否解释一下这背后的原因,或者您为什么不想使用 java 标准?
-
您可以使用反射 API 来编写通用的 getter 和 setter 方法来按名称查找字段。但在你的情况下这是一个坏主意,你会遇到类型问题。因此,如果您想编写 java 代码,我建议坚持使用 java 代码标准。
-
@Kevin 感谢您的评论。我想在构造函数中使用
setter,因为我不想编写每个属性,即使我创建了像Foo bar = new Foo(name, num);..haha 这样的实例,我可以在Python、PHP、Go中实现代码,所以我通常在构造函数中使用setter()。 -
@ArcticLord 感谢您的评论。我检查了
reflection。在某些网页中,他们不建议使用reflection。也许我必须遵循 Java 标准方式。