2010-09-06 3 views
1

Ok так вот то, что мне нужно сделать:Создать экземпляр класса, на который ссылается переменная генерируемой в методе

Читаю в файле CSV и необходимо создать новый экземпляр класса для каждого линия.

Затем мне нужно сохранить ссылочную переменную для класса в списке.

Я в порядке с большинством этого, но как я могу создать класс, используя переменную

что-то вроде этого

string newClassName; 
int a = 1; //counts number of loops 

while (bufferedScanner.hasNextLine()); 
{ 
    newClassName = SS + a; 

    LightningStorms newClassName = new LightningStorms(); 

    a = a + 1; 

} 

Я оставил вне много дополнительного кода, но его создание из новый класс, который меня интересует.

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

Большое спасибо

+0

'newClassName' - это' строка'. Вы не можете использовать это позже, как «LightningStorms». В любом случае - ваш вопрос мне непонятен. –

+0

Каков тип и значение «SS»? –

ответ

1

Вы можете получить экземпляр объекта класса для конкретного имени, используя Class.forName() - это должно быть полностью квалифицированным классом, поэтому java.lang.String не String.

С объектом класса можно построить новый экземпляр с помощью отражения, см Class.getConstructor()

+2

Или 'Class.newInstance()', если класс имеет конструктор с нулевым аргументом – Riduidel

+0

, поэтому я бы поставил новое имя в скобки, как в Class.newInstance (newClassName) или Class.forName (newClassName)? – brumhee

+0

Класс.forName (newClassName) .newInstance() – foret

0

Как насчет:

SortedMap<String, LightningStorms> myMap = new TreeMap<String, LightningStorms>(); 
while (bufferedScanner.hasNextLine()); 
{ 
    String newClassName = SS + a; // or whatever you want 
    myMap.put(newClassName, new LightningStorms()); 
} 

В конце цикла у вас есть карта LightningStorms объектов для каждой строки в вашем CSV-файле, и каждый объект ссылается на вашу «сгенерированную переменную». Вы можете получить доступ к объекту с помощью: myMap.get («referenceVariable») Кроме того, вы можете преобразовать в список и сохранить порядок клавиш:

List<LightningStorms> myList = new ArrayList<LightningStorms>(myMap.values()); 

или вы можете иметь список ссылочных имен, а также:

List<String> myReferences = new ArrayList<String>(myMap.keySet()); 
Смежные вопросы