Различия в выводе типов JDK8 Javac / Eclipse Luna?

Я пытаюсь переключить проект на Java8 и сталкиваюсь со странными различиями между Eclipse Luna и выводом типа javac. С JDK 1.7.0_65 javac этот код компилируется просто отлично. JDK 1.8.0_11 жалуется, что как toString (char []), так и toString (Throwable) соответствуют «toString (getKey (code, null))»; линия. Eclipse Luna 4.4 (I20140606-1215) успешно компилируется с любым JDK:

public class TypeInferenceTest {
    public static String toString(Object obj) {
        return "";
    }

    public static String toString(char[] ca) {
        return "";
    }

    public static String toString(Throwable t) {
        return "";
    }

    public static <U> U getKey(Object code, U defaultValue) {
        return defaultValue;
    }

    public static void test() {
        Object code = "test";
        toString(getKey(code, null));
    }
}

Я думаю, что единственная подпись, которая могла бы совпадать, это toString (Object).

Конечно, я мог бы просто добавить приведение к объекту, но мне интересноЗачем javac не может самостоятельно определить тип (в отличие от eclipse), и почему, черт возьми, javac считает подходящие совпадения для Throwable и char [], но не для Object.

Это ошибка в Eclipse или Javac? (Я имею в виду, что здесь может быть только один компилятор, либо он компилируется, либо нет)

Изменить: Сообщение об ошибке от Javac (JDK8):

C:\XXXX\Workspace\XXXX\src>javac -cp . TypeInferenceTest.java
TypeInferenceTest.java:22: error: reference to toString is ambiguous
                toString(getKey(code, null));
                ^
  both method toString(char[]) in TypeInferenceTest and method toString(Throwable) in TypeInferenceTest match
1 error

Ответы на вопрос(2)

Ваш ответ на вопрос