gpt4 book ai didi

java - JAVA中动态加载一个类-Anomaly

转载 作者:行者123 更新时间:2023-11-29 06:46:37 24 4
gpt4 key购买 nike

伙计们, 我在 Java 动态类加载方面遇到了一个稍微不同的问题。我必须将一个对象(假设是 A 类的对象 A1)传递给 B 类的另一个对象 B1 的构造函数,以便 A1 的详细信息存储在 B1 中。 B1 不知道它正在接收什么样的对象。所以它只知道 A1 是一个对象。

现在我在 B 类中有函数,它接受对象 C1 并检查它是否等于对象 A1。所以基本上我必须检查

  1. 如果对象C1也是类A的类型。(其实我还没有超过这一点。)
  2. 如果对象内部的值相同

我尝试了一个解决方案:

当在 B1 中存储对象 A1 时,我还存储了类“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

这个问题还有其他问题。让我用下面的评论更新它。我现在必须比较 B1 内的 C1 和 A1 中的一个值,比如 AGE。现在我该怎么做?如果我尝试函数或值,我会给我编译器错误,因为编译器仍然忘记了对象 C1 和 A1 的类类型

此外,我本来可以先保存 X1 而不是 A1。现在我可能必须检查不同的属性检查,如 ADDRESS。这极大地改变了问题的维度。

最佳答案

instanceof 运算符仅适用于静态加载的类。对于动态加载的类,请在 Class 类上使用 isInstance 方法。

if (class11.isInstance(C1)) {
// do something
}

关于java - JAVA中动态加载一个类-Anomaly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com