从类的实例变量创建数组

时间:2019-05-29 14:35:15

标签: java arrays variables instance-variables

我必须从一个类的实例变量(值,而不是名称)创建一个数组。目前,我的代码仅对每个变量使用getter方法,但是对于14个变量,这是难看的,并且代码效率不高。还有其他方法可以更有效地做到这一点吗?

2 个答案:

答案 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