2015-12-03 6 views
3

У меня есть класс элементов, который содержит данные, такие как ITEMNAME, цены и т.д., и добавить к нему, когда продавец хочет продать что-то, например, так:Преобразование массива объектов в массив строк

public void sellItem(String itemName, double Price) throws java.rmi.RemoteException, Exception { 
    items.add(new Item(itemName, price)); 

I затем вернуться все элементы в списке, поэтому продавец/покупатель может просматривать список.

public ArrayList<Item> listItems() { 
    return items; 
} 

Далее, я работаю на заселение JGroups экземпляров, чтобы обеспечить данные этого «Item» быть реплицируются экземпляров. Когда элемент был перечислен, преобразовать в объект:

/* Create a new ItemObject containing the Items used for JGroups later */ 
public void createItemObject() throws Exception { 
    Object[] objArray = items.toArray(); 
    FileOutputStream fis = new FileOutputStream("io"); 
    ObjectOutputStream itemObject = new ObjectOutputStream(fis); 
    itemObject.writeObject(objArray); 
    itemObject.close(); 
    fis.close(); 
} 

Каждый экземпляр реплицированному сервера будет принимать этот объект в качестве входных данных и, надеюсь распечатать данные в пределах этого объекта в его окне терминала:

static Object io = new Object(); 
public static void getAuctionObject() throws Exception { 

    FileInputStream fis = new FileInputStream("io"); 
    ObjectInputStream auctionObjectIn = new ObjectInputStream(fis); 
    ao = auctionObjectIn.readObject(); 
    auctionObjectIn.close(); 
    System.out.println("Received object at Front End: " + ao); 
    //Print out item data..... 
} 

Однако, как бы я на самом деле перебирал этот объект и распечатывал данные элемента, такие как «itemName», «price» и т. Д.?

+5

Возможно, потребуется перегрузка '.toString()' этого класса. Затем вы можете просто вызвать '.toString()'. – ryanyuyu

+1

OTOH, много Java-кода использует '.toString()' для существенной отладки. Если у вас есть разные требования к красиво отформатированной строке, рассмотрите возможность добавления нового строкового метода 'inventoryString()' или что-то подобное, которое печатает форматированную строку так, как вам нужно. – markspace

ответ

3

Переопределить методы toString() на объектах, чтобы каждый тип возвращал правильно отформатированные строки.

Или, если вы хотите сохранить исходный метод toString(), создайте новый interface, который будет использоваться всеми типами объектов, которые вы хотите распечатать, и который обеспечивает одинаковый «общий метод» через все эти объекты, причем каждый тип объекта, определяющий поведение метода интерфейса.

Смежные вопросы