50,530
社区成员
发帖
与我相关
我的任务
分享
public interface ABC {
void printABC();
}
public class D<T extends ABC> implements ABC{
@Override
public void printABC() {
System.out.println("ABC");
}
}
public class E extends D<F>{
}
public class F implements ABC {
@Override
public void printABC() {
System.out.println("abc");
}
}
这样是可以编译过的
但是把F修改成
public class F {
}
public class E extends D<F>{
}
就编译不过了
这里会报错Type parameter 'TestInterface.F' is not within its bound; should implement 'TestInterface.ABC'
你刚才那段代码其实ValueObject<String>和ValueObject<T extends Serializable> String已经实现了Serializable所以ValueObject<String>可以编译 如果你把String换成你自己写的一个其他的没有实现过Serializable的类 就会报错,这个写法不是表示继承 是表示限定