Diferenças na inferência de tipo JDK8 javac / Eclipse Luna?

Estou tentando mudar um projeto para Java8 e encontrar diferenças estranhas entre o Eclipse Luna e a inferência de tipo de javac. Com o JDK 1.7.0_65 javac, esse código compila perfeitamente. O JDK 1.8.0_11 reclama que toString (char []) e toString (Throwable) correspondem à "toString (getKey (código, nulo));" linha. O Eclipse Luna 4.4 (I20140606-1215) o compila alegremente com o 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));
    }
}

Eu acho que a única assinatura que poderia corresponder é toString (Object).

Claro que eu poderia simplesmente adicionar um elenco ao Object, mas me perguntoporque O javac não pode inferir o tipo por si só (enquanto o eclipse o faz), e por que o heck javac considera Throwable e char [] correspondências adequadas, mas não Object.

Isso é um bug no Eclipse ou no javac? (Quero dizer, apenas um compilador pode estar aqui, seja ele compilado ou não)

Editar: Mensagem de erro do 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

questionAnswers(2)

yourAnswerToTheQuestion