Создание массива из переменных экземпляра класса - PullRequest
0 голосов
/ 29 мая 2019

Я должен создать массив из переменных экземпляра класса (значения, а не имена). В настоящее время мой код просто использует геттеры для каждой переменной, но с 14 переменными это неприглядно и не совсем эффективно для кода. Есть ли другой способ сделать это более эффективно?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Как правило, чтобы получить поля, определенные в классе с помощью отражения, и получить значение поля для этого объекта.

Пример:

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

0 голосов
/ 29 мая 2019

Вы можете создать метод внутри класса, такой как getInstanceVaribles, который возвращает массив со значениями переменных экземпляра.Тогда вы можете использовать this.variable_names при назначении значений массива вместо создания и использования методов получения, и это добавит слой абстракции к вашему коду и просто код клиента.

...