2013-04-27 4 views
1

Я пытаюсь создать массив класса внутри класса, чтобы иметь несколько наборов внутреннего класса. Однако из-за того, что я не могу создать пустой массив в Java, мне было интересно, что это лучший способ установить это. Я знаю, что могу просто определить массив, который больше, чем я когда-либо использовал, но я чувствую такое неряшливое программирование.Массив объектов в классе

Вот важная часть 2 классов:

public class xmldata { 
    String Barcode; 
    String First; 
    String Last; 
    String Phone; 
    String Email; 

    String md5sum; 

    String zipfile; 

    picture_data[] pics; 

...

public class picture_data { 

    static String filename; 
    static String directory; 

Как вы можете видеть, я, чтобы иметь массив picture_data в XMLDATA. Я видел некоторые вещи, используя списки, но примеры разные, и я не уверен, что понимаю, как применять его в моем случае.

Вот код, который я использовал, чтобы попытаться заполнить массивы.

xmldata data = new xmldata(); 

    ResultSet pictures=db.query("select * from pictures where barcode=?",barcode); 
    int i = -1; 
    while (pictures.next()) { 
     ++i; 
     data.pics[i].setdirectory(pictures.getString("path")); 
     data.pics[i].setfilename(pictures.getString("filename"));  
    } 

Любые предложения будут оценены.

+2

Тогда не использовать массив. Используйте ArrayList или Vector для хранения объектов picture_data. –

ответ

2

Современный idiomatic Java не использует необработанные массивы или Вектор, он использует type safe List implementations.

Также picture_data и xmldata не идиоматическое именования классов в Java, она должна быть PictureData и XMLData. Я бы бросил вызов семантике класса под названием PictureData или XMLData.

Правильное решение было бы что-то вроде

List<PictureData> list = new ArrayList<PictureData>(); 

Понимание, как работать с Collections рамок в Java является основным требованием, чтобы быть продуктивным. Тип сейфа List s являются основным компонентом для написания реального Java-кода.

+0

Это делает что-то странное. Кажется, я могу добавить в список, но когда я вытаскиваю значения из списка, они всегда являются последним значением, которое я помещаю в список, а не правильными значениями. – Codeguy007

1

Если размер вашего массива будет динамическим, тогда используйте списки внутри и ArrayList точно. Таким образом, вам не нужно заботиться о размере, потому что он рассматривается внутри страны.

0

Лучший вариант будет использовать ленивый начато ArrayList

public class Xmldata { 

    List<picture_data> pics; 

    public void addPics(picture_data data) { 
     if(pics == null) pics = new ArrayList<picture_data>(); 
     pics.add(data); 
    } 
} 

Здесь pics список будет создан только если picture_data объекты типа добавляются в Xmldata класса

+0

Я предполагаю с этим методом, мне нужно будет создать экземпляр picture_data, добавить данные и его, а затем добавить экземпляр в экземпляр XmlData. – Codeguy007

+0

Да .. вам нужно создать один экземпляр .. в цикле 'while' – sanbhat

+0

Как мне получить информацию из этого списка? – Codeguy007