我是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);
}
}
我不想在Java上使用这种典型的类,而是希望使用getter()
和setter()
方法设置和获取实例属性,如...
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)
请你给我一些建议吗?
答案 0 :(得分:4)
执行此操作的唯一方法是通过访问者和 mutator (获取/设置)方法,就像您在顶部所做的那样。
答案 1 :(得分:1)
您想要实现的目标可以使用反射作为下一步:
// get the field "key" from the class "Foo"
Field field = Foo.class.getField("key");
// make it accessible as it is a private field
field.setAccessible(true);
// set the value of this field to val on the instance self
field.set(self, val);
有关反思here
的更多详情