Java 8: Reference to [method] is ambiguous Java 8:[method] 的引用不明确。
- 论坛
- Java 8: Reference to [method] is ambiguous Java 8:[method] 的引用不明确。
14 浏览
Java 8: Reference to [method] is ambiguous Java 8:[method] 的引用不明确。
有人知道为什么以下代码在Java 7及以下版本中可以编译通过,但在Java 8中会失败吗?
public static void main(String[] args) throws Exception { put(get("hello")); } public staticR get(String d) { return (R)d; } public static void put(Object o) { System.err.println("Object " + o); } public static void put(CharSequence c) { System.err.println("CharSequence " + c); } public static void put(char[] c) { System.err.println("char[] " + c); }
get方法具有泛型返回类型。在JDK 7及以下版本中,这可以编译通过,并选择具有Object参数的put方法。但在JDK 8中,无法编译通过,提示put方法存在歧义。
显然,JDK 8跳过了具有Object参数的方法,并找到了最后两个子Object参数方法并对它们进行了投诉(即,如果您添加另一个具有其他参数类型的put方法,编译器将切换并对新的最后两个方法进行投诉)。
这似乎是一个bug。