Установка переменных по имени в Java

Просто добавьте includes:

myArr.filter(item => item.performed ===1 && condition_id.includes(item.id));
16
задан Alex B 10 November 2008 в 16:23
поделиться

5 ответов

Вот то, как Вы могли бы реализовать setAttribute отражение использования (я переименовал функцию; существуют различные отражательные функции для различных типов поля):

public void setIntField(String fieldName, int value)
        throws NoSuchFieldException, IllegalAccessException {
    Field field = getClass().getDeclaredField(fieldName);
    field.setInt(this, value);
}
31
ответ дан 30 November 2019 в 16:14
поделиться

Кроме того, смотрите на BeanUtils, который может скрыть часть сложности использования отражения от Вас.

4
ответ дан 30 November 2019 в 16:14
поделиться

В целом Вы хотите использовать Отражение. Вот хорошее введение в тема с примерами

, В частности, раздел "Changing Values of Fields" описывает, как сделать то, что требуется сделать.

я отмечаю, что автор говорит, "Эта функция чрезвычайно мощна и не имеет никакого эквивалента на других стандартных языках". Конечно, за прошлые десять лет (статья была написана в 1998) мы видели большие успехи, достигнутые на динамических языках. Вышеупомянутое довольно легко сделано в Perl, Python, PHP, Ruby, и так далее. Я подозреваю, что это - направление, из которого Вы, возможно, произошли на основе тега "оценки".

5
ответ дан 30 November 2019 в 16:14
поделиться

В зависимости от использования можно использовать отражение, как рекомендуется выше, или возможно HashMap лучше подошел бы...

1
ответ дан 30 November 2019 в 16:14
поделиться

Вы могли бы хотеть кэшировать некоторые отражательные данные, в то время как Вы в нем:

import java.lang.reflect.Field;
import java.util.HashMap;

class Foo {
    private HashMap<String, Field> fields = new HashMap<String, Field>();

    private void setAttribute(Field field, Object value) {
        field.set(this, value);
    }

    public void setAttribute(String fieldName, Object value) {
        if (!fields.containsKey(fieldName)) {
            fields.put(fieldName, value);
        }
        setAttribute(fields.get(fieldName), value);
    }
}
-1
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: