LoginSignup
1
0

More than 5 years have passed since last update.

【Java初学者】コレクション 型指定なし printlnメソッド

Last updated at Posted at 2019-05-23

疑問

最近コレクションを学習し、疑問に感じた点があったため、記事に起こしながら確認します。

コレクション

Listを使うときに型引数を指定しない場合、格納された時点でObject型として処理される。

理解できなかった謎処理

ListにString型変数入れたけど、Listを型指定してないからObject型になって、そのオブジェクトの文字列をprintlnで表示...?

printlnの処理

printlnの引数に入れられたオブジェクトのvalueOfメソッドを呼び出して文字列を表示する。
<修正 2019/05/24>
println()の引数をStringクラスのstaticメソッドvalueOf()の引数に与え処理が行われる。

toStringとvalueOfの違い

toStringメソッドはインスタンスの文字列を返す。
valueOfメソッドは引数で渡されたオブジェクトがnullでなければ、そのオブジェクトのtoStringメソッドを呼びだす。

結局toString

valueOfも結局はそのオブジェクトの文字列を返している。

User.java
public class User{
    private String name;
    public User(String name){
         this.name = name;
    }
    public String toString(){
         return name;
    }
}
Main.java
public class Main{
   public static void main(String[] args){
      ArrayList list = new ArrayList();
      list.add(new User("sample"));
      System.out.println(list.get(0)); //sample
   }
}

結果

型安全、Overrideをより理解できた。

参考

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0