【发布时间】:2020-03-26 08:06:43
【问题描述】:
我正在尝试将类的每个变量的所有值存储到 ArrayList 中。
我已经在我拥有的所有类中创建了这个函数,我希望它对每个类都做同样的事情(每个类都有不同的变量)。
换句话说,我想@Override toString 函数但不知道该类有多少属性。
这是我到目前为止所做的:
public class Example {
private type1 var1 = 'Hello';
private type2 var2 = 10;
private type3 var3 = 'Bye';
//...
@Override
public String toString() {
ArrayList<String> fields = new ArrayList<>();
for (Field f: this.getClass().getDeclaredFields()) {
fields.add(f.getName()); //This does not work for what I want. This returns the name of the type of the variable and not what it is storing. What should I change it for?
}
return String.join(", ", fields);
}
}
所以,对于这个例子,我得到的输出是:
var1, var2, var3
但我想要的输出是:
Hello, 10, Bye
有没有办法做到这一点?
【问题讨论】:
-
不是真的,该函数可能有不同的命名
-
..哪个函数?
-
示例中的函数
-
但是
getName()不返回字段的类型,而是返回名称。因此getName()。该类型由(令人惊讶的)getType()返回。所以不,你的代码没有做你声称的事情。
标签: java reflection field