我必须从一个类的实例变量(值,而不是名称)创建一个数组。目前,我的代码仅对每个变量使用getter方法,但是对于14个变量,这是难看的,并且代码效率不高。还有其他方法可以更有效地做到这一点吗?
答案 0 :(得分:0)
您可以在类内创建一个方法,例如getInstanceVaribles,该方法返回具有实例变量值的数组。因此,您可以在分配数组的值时使用this.variable_names
而不是使用和使用getter方法,这将为您的代码(仅是客户端代码)添加抽象层。
答案 1 :(得分:0)
基本上是通过反射获取类中定义的字段,并获取该对象的字段值。
示例:
import java.lang.reflect.Field;
import java.util.Arrays;
public class ReflectionTest {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
Model m = new Model(100, 200, 300, 400, 500, 600);
Field[] fields = m.getClass().getDeclaredFields();
Object[] data = new Object[fields.length];
int i = 0;
for (Field field : fields) {
if (!field.isAccessible()) {
field.setAccessible(true);
}
Object o = field.get(m);
data[i] = o;
i++;
}
System.out.println(Arrays.toString(data));
}
}
class Model {
private int a, b, c, d, e, f;
public Model(int a, int b, int c, int d, int e, int f) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
}
}
JDK:1.8