###質問
Javaの勉強中に疑問に思ったことがあります。
ジェネリクスでは普通、型バインドをするときTの部分に入れることができるのは、<T extends 型>で定義された型のみです。
Integer,StringなどはComparableを実装してないのに<T extends Comparable<T>>という制約に制限されずクラスの型バインドに使うことができます。
どういうしくみでしょうか。
よろしくお願いします。
###該当のソースコード
Java
1public class test { 2 public static void main(String[] args) { 3 // ClassAでバインドする 4 GeneClass<ClassA> classA = new GeneClass<ClassA>();// OK 5 6 // ClassBでバインドする 7 GeneClass<ClassB> classB = new GeneClass<ClassB>();// コンパイルエラー 8 // ClassBは<T extends Comparable<T>>に当てはまらないため) 9 10 // Integerでバインドする 11 GeneClass<Integer> integer = new GeneClass<Integer>();// OK 12 } 13} 14 15class ClassA implements Comparable<ClassA> { 16 public int compareTo(ClassA a) { 17 return 0; 18 } 19} 20 21class ClassB { 22} 23 24class GeneClass<T extends Comparable<T>> { 25}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/11 09:15
2016/05/12 01:53 編集