我有以下代码:
public class Foo {
interface Coo<T> {
public T cool();
}
abstract class Bar<T extends Bar<T>> implements Coo<T> {
@SuppressWarnings("unchecked")
T doSomething() {
return (T) this;
}
@SuppressWarnings("unchecked")
@Override
public T cool() {
return (T) this;
}
}
class FooBar extends Bar<FooBar> {
@Override
public FooBar cool() {
return super.cool();
}
}
}
为什么强制转换为(this)对象类型不安全?当 Bar 实现 Coo 时,返回的cool 必须是 T 类型,这不是泛型的说法,它扩展了 Bar 或其子类吗?