Можно ли объявить переменную с именем, сохраненным в String? [dубликат]

Обновление через пользователя root сделало возможным обновление до 3.7.2!

Это может показаться странным, но, учитывая, что двоичные файлы находятся в / usr / bin, это нормально, обычный пользователь может не обеспечивают системного обновления. Запуск eclipse через su и предоставление ему процесса идентификатора корня делает возможным обновление.

Единственный способ, которым это могло бы быть возможно, - это использовать synatpic, ЕСЛИ только репозиторий сделал бы доступными обновления. ..

71
задан 6 May 2014 в 01:41

6 ответов

Что вам нужно, так называется array. Я хотел написать следующий код:

int[] n = new int[4];

for(int i=1;i<4;i++)
{
    n[i] = 5;
}
11
ответ дан 15 August 2018 в 15:39
  • 1
    Не хотите использовать массивы. Я хочу динамически получать доступ к переменным (n1, n2, n3) в зависимости от некоторого условия. – Ashish Anand 18 July 2011 в 12:19

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

2
ответ дан 15 August 2018 в 15:39

Если вы хотите получить доступ к переменным, какую-то динамику, вы можете использовать отражение. Однако Reflection работает не для локальных переменных. Это применимо только для атрибутов класса.

Грубый быстрый и грязный пример:

public class T {
    public Integer n1;
    public Integer n2;
    public Integer n3;

    public void accessAttributes() throws IllegalArgumentException, SecurityException, IllegalAccessException,
            NoSuchFieldException {

        for (int i = 1; i < 4; i++) {
            T.class.getField("n" + i).set(this, 5);
        }
    }
}

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

28
ответ дан 15 August 2018 в 15:39
  • 1
    Отлично, когда вам нужно преобразовать датчик сенсора event.values ​​[] в набор переменных. event.values ​​[] может иметь длину от 1 до 6, и это удобно для его преобразования, в моем случае для jars-маршалинга без использования массива. – Farshid T 22 June 2015 в 01:30

Вы должны использовать List или array вместо

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Или

int[] arr  = new int[10];
arr[0]=1;
arr[1]=2;

Или даже лучше

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("n1", 1);
map.put("n2", 2);

//conditionally get 
map.get("n1");
10
ответ дан 15 August 2018 в 15:39

Динамические переменные имена в Java Нет такой вещи.

В вашем случае вы можете использовать массив:

int[] n = new int[3];
for() {
 n[i] = 5;
}

Для более общих (name, value) пар используйте Map<>

5
ответ дан 15 August 2018 в 15:39

Попробуйте этот путь:

    HashMap<String, Integer> hashMap = new HashMap();

    for (int i=1; i<=3; i++) {
        hashMap.put("n" + i, 5);
    }
3
ответ дан 15 August 2018 в 15:39

Другие вопросы по тегам:

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