java - 从 Java 列表中获取对象

标签 java list object

我正在做一个小小的文字冒险。我目前正在处理库存。我试着用一个 list 来做我的 list : 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[] ,因为您使用了可变参数 ( ... )。您看到的是调用 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 s 和所有基元都可以自动装箱。

关于java - 从 Java 列表中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399301/

相关文章:

r - R : sort one lists' value depending on other lists' value 中的列表排序列表

Java基本对象程序

javascript - 我如何创建一个函数来更改位于数组内的对象内的属性,在 JSON 中

python - 更新另一个类中的 kivy 标签文本

java - 如何更改 javafx tableview 中单元格的颜色?

java - RedDot 与 Lotus Notes 支持

当我调用函数时 C++ 列表程序卡住

c# - 列出从 child 到 parent 的分配

java - 同一部手机上 Android 应用程序和 Java 应用程序之间的套接字

java - 如何提高 Redisson 中 RMapCache 的性能