伙计们,我在 Java 动态类加载方面遇到了一个稍微不同的问题。我必须将一个对象(比如说 A 类的对象 A1)传递给 B 类的另一个对象 B1 的构造函数,以便 A1 的详细信息存储在 B1 中。B1 不知道它正在接收什么样的对象。所以它只知道 A1 是一个对象。
现在我在 B 类中有函数,它接受对象 C1 并检查它是否等于对象 A1。所以基本上我必须检查
- 如果对象 C1 也是 A 类的类型。(实际上我还没有超过这一点。)
- 如果对象内部的值相同
我尝试了一个解决方案:
将对象 A1 存储在 B1 中时,我还存储了类“A”的名称,因为对象 B1 仅获取对象 A1 而不是类名 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);}
有关如何进行的任何指示都会非常有帮助!
解决方案是使用:isInstance 而不是 instanceof
此问题还附带其他问题。让我用下面的评论更新它。现在,我必须在 C1 和 A1 中比较一个值,比如 AGE,在 B1 中。现在我该怎么做?如果我尝试函数或值,我会给我编译器错误,因为编译器仍然不知道对象 C1 和 A1 的类类型
我也可以一开始就保存 X1 而不是 A1。现在我可能需要检查不同的属性检查,例如 ADDRESS。这极大地改变了问题的维度。