皆さん、私は Java の動的クラスのロードに関して少し異なる問題を抱えています。A1の詳細がB1内に保存されるように、オブジェクト(クラスAのオブジェクトA1としましょう)をクラスBの別のオブジェクトB1のコンストラクターに渡す必要があります。B1 は、受信しているオブジェクトの種類を認識していません。したがって、A1 がオブジェクトであることがわかっているだけです。
クラス B には、オブジェクト C1 を受け取り、それがオブジェクト A1 と等しいかどうかをチェックする関数があります。だから基本的に私はチェックする必要があります
- オブジェクト C1 も型クラス A の場合 (実際、私はこの時点を過ぎていません。)
- オブジェクト内の値が同じ場合
私は解決策を試しました:
オブジェクト A1 を B1 内に格納する場合、オブジェクト B1 はオブジェクト A1 のみを取得し、クラス名 A を取得しないため、クラス「A」の名前も格納します。
public static void testing(Object C1, String s) //testing is the function of B called by B1
{
try{
Class c = Class.forName(s);
if( C1 instanceof c) // This is throwing error stating c cannot be resolved to a type
{
//further checking
}
}catch (Exception e){ System.out.println(e);}
}
クラス型を取得して instanceof() 比較を行うために別のコードを試しましたが、成功しません。なにか提案を ?
私もこれを試しましたが、同じエラー
ClassLoader classLoader = B.class.getClassLoader();
try{
Class class11 = classLoader.loadClass(s);
if ( C1 instanceof class11 )
{
}
}catch (Exception e){ System.out.println(e);}
続行する方法についての指針は非常に役立ちます!
解決策は次を使用することです:instanceofの代わりにisInstance
この問題に付随する他の問題もあります。以下のコメントで更新させてください。ここで、B1 内の C1 と A1 の両方で、AGE などの値を比較する必要があります。今、どうすればいいですか?関数または値を試してみると、コンパイラはオブジェクト C1 および A1 のクラス型を認識していないため、コンパイラ エラーが発生します。
また、そもそも A1 の代わりに X1 を保存することもできました。ここで、ADDRESS のような別のプロパティ チェックをチェックする必要があるかもしれません。これにより、問題の次元が大幅に変わります。