Javaの問題集を勉強中に理解できない部分がありました。
以下の問題の選択肢Eがなぜ不正解なのか教えて欲しいです。
【問題】
次のAクラスを継承したサブクラスに定義できるメソッドとして、正しいものを選びなさい。(2つ選択)
(正解はBとF)
【コード】
import java.util.*;
public class A{
public List<Number> test(Set<CharSequence> s){
return null;
}
}
【選択肢】
A. public ArrayList<Integer> test(Set<String> s){...}
B. public List<Integer> test(TreeSet<String> s){...}
C. public List<Integer> test(Set<String> s){...}
D. public List<Object> test(Set<CharSequence> s){...}
E. public List<Integer> test(Set<CharSequence> s){...}
F. public ArrayList<Number> test(Set<CharSequence> s){...}
【考えたこと】
解説文より、Bはオーバーロードのため正解、Fは共変戻り値として解釈され正解、ということは分かりました。
しかし、Fが共変戻り値として解釈されるならEも共変戻り値と解釈はされないのでしょうか?
なぜFがよくてEがダメなのか教えてください。
回答1件
あなたの回答
tips
プレビュー