我有下面的代碼片段,它返回一個類型不匹配錯誤:的Java擴展類類型
@SuppressWarnings("rawtypes")
public Map<String, Class<? extends SomeClass.SuperClass>> subClass() {
return Collections.singletonMap("hello", SomeClass.SubClass.class);
}
類聲明如下所示:
public class SomeClass {
public static abstract class SuperClass { }
public static class SubClass extends SuperClass{ }
}
這將返回一個類型不匹配錯誤,說明:
Type mismatch: cannot convert from Map<String,Class<SubClass>> to Map<String,Class<? extends SuperClass>>
爲什麼會發生這種情況?無論我在subClass()的參數化返回類型中使用「?extends SuperClass」還是隻使用「SuperClass」,我仍然會看到相同的錯誤。我也嘗試過只是擴展SomeClass,但也沒有奏效。
顯式類型參數是一個很好的觀點,Java 8可以自動調用它嗎? – 2014-12-02 20:11:37
這是[Type inference](https://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html)和[Target Typing](目標打字)(http://docs.oracle.com/javase/tutorial/) java/javaOO/lambdaexpressions.html#target-typing)東西。 – 2014-12-02 20:26:06