java - 为什么 Object.to string 对于 List 类型返回 true

标签 java list object generics

我只是出于好奇才写了这两行:

public static void main(String[] args) throws InterruptedException {
    Object obj = new ArrayList<String>().add("Some text");
    System.out.println("output : " + obj.toString());
}

由于 Object 类是所有内容的父类(super class),因此该代码可以正确编译。但是当我运行它时,它给我的输出为:

output : true

可能的原因是什么?

最佳答案

您正在打印的对象由 new ArrayList<String>().add("Some text") 返回。 add() 返回 boolean (事实上,对于 ArrayList ,它总是返回 true ),当分配给 Object 变量时,它会自动装箱为 Boolean

/**
 * Appends the specified element to the end of this list.
 *
 * @param e element to be appended to this list
 * @return <tt>true</tt> (as specified by {@link Collection#add})
 */
public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}

关于java - 为什么 Object.to string 对于 List 类型返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38051529/

相关文章:

python - 接受一个列表并返回一个仅包含原始元素的列表的函数?

python - 谁能总结一下 Python 中列表、元组、字典之间的显着区别?

java - 没有引用的新对象的生命周期

java - 检查重叠基因组区域的算法

java - Jackson 自定义字符串到日期序列化器

java - for 循环中嵌套 if 语句 [JAVA/LibGDX]

python - 当值为 None 或空字符串时排序python

javascript - 无法使 javascript 对象属性值更新

json - 如何在 jq 中解构后重建单个对象

java - Firebase onDataChange 未触发