現在、Java Silverの勉強をしています。
問題集を解いていたところ、納得いかない解答が出てきたので質問します。
class Sample { public void test(Object[] a) { System.out.println("A"); } public void test(long[] a) { System.out.println("B"); } public void test(Object a) { System.out.println("C"); } public class Main { public static void main(String[] args) { Sample s = new Sample(); s.test(new int[3]); } } }
上記の解答は「”C”と出力される」です。
自分は、”A”と出力されると思っていました。
Mainメソッドの中のtestメソッドで、new int[3]という配列を渡しているのだから、オーバーロードに選択されるのは、引数が配列のメソッドなのではないかと思ってしまいました。
解答の解説を読んでも理解できませんでした。
「プリミティブ型の配列」という言葉を初めて聞きました。
配列はすべてObject型(参照型)だけだと思っていたので、それらの違いがよくわかりません。
理解のある方、説明をお願いします
回答3件
あなたの回答
tips
プレビュー