Diferencias en la inferencia de tipos JDK8 javac / Eclipse Luna?

Estoy tratando de cambiar un proyecto a Java8 y encuentro diferencias extrañas entre Eclipse Luna y la inferencia de tipos de javac. Con JDK 1.7.0_65 javac este código se compila muy bien. JDK 1.8.0_11 se queja de que tanto toString (char []) como toString (Throwable) coinciden con "toString (getKey (code, null));" línea. Eclipse Luna 4.4 (I20140606-1215) lo compila felizmente con 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));
    }
}

Creo que la única firma que podría coincidir es toString (Object).

Por supuesto, podría simplemente agregar un elenco a Object, pero me preguntopor qué javac no puede inferir el tipo por sí mismo (mientras que eclipse lo hace), y por qué el javac diablos considera Throwable y char [] coincidencias adecuadas, pero no Object.

¿Es esto un error en Eclipse o javac? (Quiero decir que solo un compilador puede estar aquí, ya sea que compila o no)

Editar: Mensaje de error de 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

Respuestas a la pregunta(2)

Su respuesta a la pregunta