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
か?ジェネリックを使用せずにそれは可能ですか?