Java 允许将子类实例分配给类类型字段,例如:
public class BaseClass {
}
public class SubClass extends BaseClass {
}
public class Example {
private BaseClass field1;
public void assign(SubClass subclass) {
field1 = subclass; // is OK
}
}
Java 也允许使用接口作为类型。如果我们有一个接口Fooable,
public interface Fooable {
void foo();
}
我们的Example类可以有一个类型的字段Fooable,
Fooable field2;
也就是说,可以分配给field2任何实现Fooable接口的类的实例。
但是如果我想告诉编译器field3必须既是接口的实例BaseClass又是Fooable接口的实现呢?所以,如果有一个类
public class FooSubClass extends BaseClass implements Fooable {
@Override
public void foo() {
// TODO
}
}
,我可以分配给field3实例FooSubClass但不是SubClass?是否可以不使用任何类型的泛型?