2016-07-29 10 views
-4

Я пишу прийти шаблонного так:Заменить создание шаблонного объекта

this.lposItems = new LposItems[5]; 
    final LposItems lposItem = new LposItems(); 
    lposItem.setA("24341"); 
    lposItem.setB("14"); 
    final LposItems lposItem1 = new LposItems(); 
    lposItem1.setA("62"); 
    lposItem1.setB("49"); 
    final LposItems lposItem2 = new LposItems(); 
    lposItem2.setA("40"); 
    lposItem2.setB("4"); 
    final LposItems lposItem3 = new LposItems(); 
    lposItem3.setA("62"); 
    lposItem3.setB("63"); 
    final LposItems lposItem4 = new LposItems(); 
    lposItem4.setA("14"); 
    lposItem4.setB("4"); 
      final LposItems lposItem5 = new LposItems(); 
    lposItem5.setA("15"); 
    lposItem5.setB("4"); 


    this.lposItems[0] = lposItem; 
    this.lposItems[1] = lposItem1; 
    this.lposItems[2] = lposItem2; 
    this.lposItems[3] = lposItem3; 
    this.lposItems[4] = lposItem4; 
      this.lposItems[5] = lposItem5; 

Может кто-нибудь сказать мне, любой 3-й партии Lib, которая может уменьшить это? (например, готовый строитель или какой-либо другой метод)

+0

Для начала вы можете создать параметризованные конструкторы и использовать литерал массив синтаксиса .. 'this.lposItems = new LposItems [] {new LposItems (" 24341 "," 14 "), новые новые LposItems (" 15 " "4" ........)} ' –

+0

Конечно - но что делать, если я не могу редактировать код LposItems? – user2666282

+0

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

ответ

1

Чтобы упростить это, вы можете использовать цикл for. Вы также можете загрузить эти два строковых массива из файла.

String entriesA[] = {"24341", "62", "40", "62", "14", "15"}; 

String entriesB[] = {"14", "49", "4", "63", "4", "4"}; 

List<LposItems> items = new ArrayList<LposItems>(); 

for (int i=0; i<entriesA.size(); i++) 
{ 
    items.add(new LposItems()); 
    items.get(i).setA(entriesA[i]); 
    items.get(i).setB(entriesB[i]); 
} 

другой подход с классом фабрики

public class LposItemsFactory 
{ 
    public static LposItems getLposItems(String A, String B) 
    { 
     LposItems item = new LposItems(); 
     item.setA(A); 
     item.setB(B); 
     return item; 
    } 
} 

, то вы можете использовать этот метод для создания элементов в одной петле

другой подход с оберточной класса

public class LposItemsWrapper extends LposItems 
{ 
    public LposItemsWrapper(String A, String B) 
    { 
     setA(A); 
     setB(B); 
    } 
} 

, а затем вы можете использовать этот класс вместо LposItems

+0

вы предполагаете, что LposItems имеет такой конструктор (и это не так) – user2666282

+0

Я изменил его, чтобы не использовать новый конструктор. – Kariem

+1

'String' должен быть в верхнем регистре. Кроме того, вы должны использовать типы интерфейсов для объектов коллекции (поэтому 'List items', а не' ArrayList items'). –

5

Я не уверен, зачем вам нужна сторонняя библиотека, когда Java предоставляет вам все необходимое для этого языка. Например, вы можете создать static завод, как следующий

private static LposItems createLposItems(String a, String b) { 
    LposItems lposItems = new LposItems(); 
    lposItems.setA(a); 
    lposItems.setB(b); 
    return lposItems; 
} 

затем заполнить ваш массив как это:

this.lposItems = { 
    createLposItems("24341", "14"), 
    createLposItems("62", "49"), 
    createLposItems("40", "4"), 
    createLposItems("62", "63"), 
    createLposItems("14", "4"), 
    createLposItems("15", "4") 
}; 

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