Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор массива для изменения элемента 
:(
    Опции темы
JurisLacis
Дата 26.11.2011, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



Доброго время суток!

Я новичек в Java (по неволе) и перед мной стоит задача написания некой апликации. Уткнулся я в один подводный (может и нет) камень, который мешает продолжать  smile Какие то голоса мне уже шептать начинают: "Ты должен кого то убить!".

Задача: имеетя куча булеан массивов по 10 элементов каждый. Апликация при старте читает файл, из которого читает различные строки, в зависимости от которых он должен выбрать массив и элемент которому изменить значение.

Вопрос:

Как мне скормить в .setBoolen() название массива, т.е. field.

Код

Array.set(field, LMKStorage.currentLmkSlot, true); 


Я значение field задавал и как поле, и как объект и еще кучами всяких способов, но JVM ругается "argument is not an array", нотя поле которое я подаю всем массивам массив, т.е. 100% массив.

Если в этот метов я подаю прямо название массива, все прокатывает и массив обновляется но это не приемлемо, т.к. тогда мне надо будит сделать ~1400 if-ов для выбора правильного массива  smile 

Пожалуста помогите в решении этого вопроса. Гуглил, книжки читал..... не нашел нужных мне примеров. 

Заранее спасибо!
 
PM MAIL   Вверх
Stolzen
Дата 27.11.2011, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Покажите целиком код вашей аппликации


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
JurisLacis
Дата 27.11.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



Добрый день!

Спасибо за ответ.

Код выглядит так:
Код

public static void loadActivities () {
...
    Class refClass = Class.forName(AUTH_CLASS_NAME);
    Field field = refClass.getField(activity);
    Object field_act = field;
    Activities.setArrayVal(field_act, true);
...
}
....
public class Activities {
    public static boolean[] V_GENERATE_000_HOST    = {false, false, false, false, false, false, false, false, false, false};
    public static boolean[] V_GENERATE_000_CONSOLE = {false, false, false, false, false, false, false, false, false, false};
    ....(~1400 массивов :smile )
    
    public static void setArrayVal (Object field, boolean val) {
        try {
            Array.set(field, LMKStorage.currentLmkSlot, true);
        }
         catch (Exception e) {
              System.exit(1);
         }
    }
}


Идея такова, что названия массивов и номера элементов набираются из файла. В гугле я нашел массу примеров как использовать РЕФЛЕКТ с массивами, но все они упираются в прямое название массива в Array.set. Мне необходимо сделать так, что бы название массива подставлялось динамически. Вот тут я и уткнулся. При подаче названия массива JVM ругается Illegal Argument Exception: Argument not an array. 

До того как появилась необходимость с массивами по этому принципу я использовал прочтые булеан переменные и все работало с Field.setBoolean(). Сейчас не работает  smile 

Object field_act = field; я использовал т.к. по ДжаваДок-у в Array.set необходимо подавать Object, или я тут что то не понимаю.

Это сообщение отредактировал(а) JurisLacis - 27.11.2011, 20:34
PM MAIL   Вверх
Stolzen
Дата 27.11.2011, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Опишите, что вы хотите сделать. Я уверен, что это можно сделать менее экзотическим способом - например, считать все данные в Map<String, boolean[]>


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.