代碼示例#1:未選中投僅在泛型類型警告
public class Foo implements Cacheable {
}
public class Fooer {
void doSomething(Cacheable obj) {
Foo foo = (Foo) obj; //#1
}
}
代碼示例2:
public class GenericFooer<FooClass extends Cacheable> {
void doSomething(Cacheable obj) {
FooClass foo = (FooClass) obj; //#2
}
}
爲什麼我會得到一個「未鑄: '可緩存' 到 'FooClass' 「#2情況下警告,但不是#1情況下警告?這兩個案件對我來說看起來完全一樣。我是否錯過了某些東西,或者代碼檢查器有點壞了? PS:我正在使用InteliJ IDEA社區版。
PSS:我知道如何解決這個警告,唯一的問題是爲什麼它在這裏,如果它不在那裏。
那麼在案例1中,你正在轉換爲實際類型。在情況2中,您將投射到一個類型參數,該參數在執行時不會被知道...... –