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である必要があるコンパイラに通知したい場合はどうなりますか?だから、クラスがあればBaseClassFooable
public class FooSubClass extends BaseClass implements Fooable {
@Override
public void foo() {
// TODO
}
}
field3、のインスタンスに割り当てることはできますが、割り当てることはできFooSubClassませんSubClassか?ジェネリックを使用せずにそれは可能ですか?