class GenMethDemo {
static <T, V extends T> boolean isIn(T x, V[] y) {
for (int i = 0; i < y.length; i++)
if (x.equals(y[i]))
return true;
return false;
}
/*when compiled in java 7 it producing an error and compiling in java 8 without error */
public static void main(String args[]) {
Integer nums[] = {1, 2, 3, 4, 5};
String s[] = {"one", "two", "three"};
System.out.println(isIn("fs", nums));
/*
when compiled in java 7 it producing an error and compiling in java 8 without error */
}
}
0
A
答えて
1
これは、Java 8の一般化されたターゲット型の推論の改善によるものです。実際、私は先週のような質問に答えました。 Java 8 call to generic method is ambiguous
質問Java 8: Reference to [method] is ambiguousの最初の回答も非常に良いです。
Java 8では、汎用メソッドに引き渡される引数の型を推論できます。 @Thomasがコメントしたように、タイプT
はObject
であると推定され、V
はObject
というオブジェクトであると推定されます(Integer
)。 Java 7では、Integer
は明らかにString
を拡張しないので、これはちょうどエラーを投げます。
0
Java 7では、T = String
とV = Integer
は、V extends T
を満たしません。
ただし、これが機能することをJavaの8つの状態のJLS:あなたのケースではこのように
List<Number> ln = Arrays.asList(1, 2.0);
これはT = V = Object
に解決されるだろう。
関連する問題
- 1. タイプの不一致 - JavaScript
- 2. VBA - タイプの不一致 - コード?
- 3. VBAタイプの不一致(13)
- 4. タイプの不一致エラー
- 5. タイプの不一致。 found:Long required:Int
- 6. ランタイムエラー13:タイプの不一致
- 7. インラインasmタイプの不一致
- 8. VBA:タイプの不一致
- 9. Vba Excelタイプの不一致
- 10. タイプの不一致。フェニックス
- 11. タイプの不一致(ランタイムエラー13)?
- 12. VBA:PivotCachesとタイプの不一致
- 13. タイプ不一致VSFlexGrid VB6
- 14. タイプ不一致FLINKグラフコミュニティ
- 15. Excel 2013でのタイプの不一致
- 16. PHPソープサーバとのタイプの不一致
- 17. Fortran90引数のタイプ/ランクの不一致
- 18. ポストグルのタイプの不一致INTERSECT
- 19. コンパイルエラーbyref引数のタイプの不一致
- 20. Swift GCDオーバーレイでのタイプの不一致
- 21. タイプCのプログラミングの不一致
- 22. タイプの不一致の頂点属性
- 23. doブロックのHaskellタイプの不一致
- 24. QueryTableのVBAタイプの不一致エラー
- 25. PHOAS in Coq:タイプの不一致
- 26. タイプ型の不一致:ここ
- 27. Excelシートランタイムエラー13:タイプの不一致。
- 28. タイプの不一致エラー - Excel VBA
- 29. Spark UDFタイプの不一致エラー
- 30. タイプの不一致:expected String、actualカラム
質問を編集して問題を説明する*テキスト*を表示してください。特に、Java 7ではどのようなエラーが発生しますか? –
'isIn(" fs "、nums)'は動作しません。その場合、 'T'は' String'、 'V'は' String'を拡張しない 'Integer'です。しかし、Java 8の型推論は、 'T = Object'と' V = Object'と一致するものを見つけることをより寛大にするかもしれません。 – Thomas