インスタンス変数に基づいて正しいコンストラクタを選択するには、クラスCが必要です。私は以下に示す基本的なコードを持っています。クラスBのインスタンスを作成し、それをAへの参照として格納するときはいつでも、クラスCでは 'Wrong'コンストラクタが使用されます。(b instanceOf B)を使用したくない場合は、これを変更するオプションは何ですか他のパッケージ。Java、インスタンスに基づいて正しいコンストラクタを使用する
Class A {
}
Class B extends A {
}
Class C {
C(A a){...}
C(B b){...}
}
Class Main{
private createClass(String s){
if (...){
return new B();
}
}
public static void main(String[] args){
A b = createClass("s");
new C(b); //--> constructor C(A a) is used but i need C(B b)
}
}
スニペット私は、クラスCは、同じパッケージ内にないとにClassNotFoundが解雇されるだろうように、一人で配布することができるようINSTANCEOFがオプションではないことを述べました。 – Mazmart
CNFはどんな場合でも解雇されます。クラスにアクセスできない場合は、そのインスタンスと何が関係していますか? 'ClassNotFoundExceptionの場合: アプリケーションが文字列名を使用してクラスをロードしようとしたときにスローされる: 1. ClassクラスのforNameメソッド。 2. ClassLoaderクラスのfindSystemClassメソッド。 3. ClassLoaderクラスのloadClassメソッドです。 –