編譯時,此?擴展TSubject擴展主題 - 不是類型安全的,或只是Java無法處理它?
import java.util.List;
public class Test {
public static class Subject {
}
public static class MySubject extends Subject {
}
public static class Step<TSubjectA extends Subject> {
public void doWork(TSubjectA subject) {
}
}
public static class Worker {
public static <TSubjectB extends Subject> void doWork(TSubjectB subject, List<Step<? extends TSubjectB>> steps) {
for (Step<? extends TSubjectB> step : steps) {
step.doWork(subject);
}
}
}
public static void main(String[] args) {
MySubject subject;
List<Step<? extends Subject>> steps;
Worker.doWork(subject, steps);
}
}
我得到的錯誤
Test.java:18:的doWork(捕獲#95擴展TSubjectB?)在Test.Step不能適用於(TSubjectB)
從我所看到的,subject
是類型TSubjectB
,其延伸Subject
。類型TSubjectA
是延伸TSubjectB
的類型,其延伸Subject
。所以我應該能夠通過subject
到doWork
它應該都是類型安全的。
我錯過了什麼,它實際上不是類型安全的,或者這僅僅是Java的泛型的限制嗎?