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
?是否可以不使用任何类型的泛型?