![](/img/trans.png)
[英]Java 8 filter objects out of list of objects based on a list of other objects
[英]Get the Objects out of a list Java
我做了一點文字冒險。 我目前正在處理庫存。 我嘗試使用列表進行清單: ArrayList<Object> inventar = new ArrayList<Object>();
我將對象初始化為項目:
Item holzschwert = new Item("Holzschwert", 1, 5);
inv.addToInventar(holzschwert);
這是我的添加方法:
public void addToInventar(Object ...item){
inventar.add(item);
}
但每次我想打印我的庫存(這是我的toString()函數)我仍然得到哈希代碼:
@Override
public String toString() {
return "Inventar [ Inventar = " + inventar + " ]";
}
和我的打印方法
Object test = inv.getInventar();
String ausgabe = inv.toString();
System.out.println(ausgabe);
和控制台日志:
Inventar [ Inventar = [[Ljava.lang.Object;@281c35ec] ]
謝謝您的幫助 :)
錯誤是
public void addToInventar(Object ...item){
inventar.add(item);
}
這里的item
是一個Object[]
,因為你使用了varargs( ...
)。 你看到的是在數組上調用toString
的結果。
你要
public void addToInventar(Object item){
inventar.add(item);
}
或者可能
public void addToInventar(Object... items){
for (Object item : items)
inventar.add(item);
}
編輯
除了這個答案,我應該指出你可能不應該使用List<Object>
。 List<Item>
會更好,因為編譯器更容易發現這樣的錯誤。 簽名addToInventar(Object... items)
真的應該避免瘟疫一樣,因為它會從字面上接受任何長度的參數中的任何序列。 所有引用類型都是Object
,所有原語都可以自動裝箱。
重寫Item類toString()方法。
class Item{
@override
public String toString(){
//Give your implementation
}
}
@Override
public String toString() {
StringBuffer stuff = new StringBuffer();
for (Object item : inventar) {
stuff.append(item.getName()); // you need a getter for the item name
stuff.append(" ");
}
return stuff.toString();
}
您的庫存和物品都是物件。 如果只是打印對象而不是字段,則只能將其內存地址作為輸出:
Ljava.lang.Object;@281c35ec
不是你為他們設置的屬性。
如果您不關心輸出的確切格式,可以在Item
類中執行以下操作:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
ToStringBuilder
是Apache Commons Lang庫的一部分。 如果你想以某種方式專門格式化,那么請使用@Code Whisperer並編寫自己的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.