2016-06-27 1 views
0

ためにtrueを返している理由私は好奇心のうち、次の2行を書いた:Object.to文字列がリストタイプ

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

をObjectクラスは、すべてのスーパークラスであるので、このコードが正常にコンパイルされます。しかし、これを実行すると、出力は次のようになります。

output : true 

考えられる理由は何ですか?

+4

'ArrayList'の' add() 'は' boolean'を返します。これは 'obj'に格納したものです。 – Biffen

+0

私の悪い....私は気付きませんでした追加:| – Boola

答えて

10

印刷するオブジェクトは、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; 
}