Как я могу использовать имя массива в качестве массива после взятия его из другого массива в Java? - PullRequest
0 голосов
/ 31 января 2020

Мой код:

 String[] rice = {"white", "brown", "none", "all"};

 String[] ingredients = {"rice", "meat", "beans", "salsa", 
 "veggies","cheese","guac", "queso", "sour cream"};

 ArrayList<String> ingredientList1 = new ArrayList<String>();
      for (int i = 0; i < randomNumbers.size(); i++){
          ingredientList1.add(ingredients[i]);
      }

Мой вопрос:

У меня есть массив имен массивов. Когда я получаю доступ к именам, я не могу их использовать. Почему бы нет? Кажется, это конфликт типов данных - как я могу его разрешить? Я не знаю, как преобразовать или привести строку в массив String [].

attributeList1.get (i) .get (0) будет индексировать ArrayList, «рис». Как использовать «рис» в качестве имени массива? рис [0] не работает.

1 Ответ

2 голосов
/ 01 февраля 2020

«Рис» в вашем массиве ингредиентов - это просто строка. Он не имеет ссылки на массив: String [] rice.

Есть много других способов достичь того, что вы предлагаете, но то, что вы конкретно пытаетесь сделать, это отражение. Чтобы получить доступ к массивам по имени, вам необходимо объявить их как поля в классе, а затем получить доступ к полям класса с помощью отражения. Например, MyArrays.class.getDeclaredField ....

Лучше всего прочитать краткое руководство по рефлексии: https://www.oracle.com/technical-resources/articles/java/javareflection.html

Это, безусловно, будет полезно узнать о рефлексии, но гораздо лучший способ добиться этого - структурировать ваши данные по-разному, например, вы можете использовать простую карту для хранения ваших данных. Ключом карты будет ингредиент, а значением будут типы этих ингредиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...