小编Bon*_*ord的帖子

Eclipse/javac不同意使用默认方法碰撞编译签名; 谁对吗?

这是一个演示该问题的简单类:

package com.mimvista.debug;

public class DefaultCollisionTest {
    public static interface Interface1 {
        public String getName();
    }

    public static interface Interface2 {
        public default String getName() { return "Mr. 2"; };
    }

    public static <X extends Interface1&Interface2> String extractName(X target) {
        return target.getName();
    }
}
Run Code Online (Sandbox Code Playgroud)

Eclipse(Neon 2)愉快地编译这个类,而javac(JDK 1.8.0_121)吐出以下编译错误:

$ javac src/com/mimvista/debug/DefaultCollisionTest.java
src\com\mimvista\debug\DefaultCollisionTest.java:13: error: class INT#1 inherits abstract and default for getName() from types Interface2 and Interface1
        public static <X extends Interface1&Interface2> String extractName(X target) {
                       ^
  where INT#1 is an intersection …
Run Code Online (Sandbox Code Playgroud)

java eclipse generics javac java-8

16
推荐指数
2
解决办法
645
查看次数

标签 统计

eclipse ×1

generics ×1

java ×1

java-8 ×1

javac ×1