クラス "ClassA"のインスタンスであるが、インターフェイス "InterfaceI"も実装するクラスに変数を設定する必要があります。クラスAを拡張していくつかのインターフェイスを実装する必要があるメンバ変数
private ClassA mVariable;
private InterfaceI mVaraible;
のが、どのように私は両方ともにClassAを拡張し、InterfaceBを実装するオブジェクトを強制することができます
明らかにこれは簡単にどちらか一方のために行うことができますか?次のようなものがあります。
private <? extends ClassA & InterfaceI> mVaraible;
私が必要とするものですが、それが可能なのかどうかはわかりません。 (と思う?)私はまた、getおよびsetメソッドが必要になりますが、それはジェネリックで行うことができます
明白な解決策は
public class ClassB extends ClassA implements InterfaceI{
//whatever here
}
あるしかしInterfaceIとにClassAの両方が外部libaryの一部であり、このlibaryにはClassAとInterfaceIを拡張するクラスがあり、ClassBを拡張するようにそれらを編集することはできません。したがって、この解決法は機能しません。
あなたがすることはできません、基本的に。変数を設定するときにチェックし、必要なときにキャストできますが、変数自体にその制約を表すことはできません。 –
Java8には、複数の継承や何らかの混在を可能にする魔法があります。 – Thufir
@Jon Skeet変数を設定するときにどうやってチェックしますか? – jtedit