gpt4 book ai didi

java.lang.NoSuchMethodException : package. ClassName.() 使用 Class

转载 作者:行者123 更新时间:2023-12-01 19:33:10 25 4
gpt4 key购买 nike

我正在使用以下代码实例化一个新类:

Class<?> clazz; Object object;

clazz = Class.forname(package.ClassName);//dynamic classes

object = clazz.newInstance();

现在的问题是,每当我运行此代码时,它都会给我一个 NoSuchMethodExeception : package.ClassName.

ClassName 有一个参数,我无法删除它,因为它是必须的。

我尝试删除参数,然后错误消失了(由于某种原因参数必须始终存在)。

为什么会这样?

最佳答案

根据 documentation ,函数 Class#newInstance 只能初始化提供无参数构造函数的类。

如果要初始化一个不提供无参数构造函数的类型,因此需要构造函数的调用方提供参数,则可以使用 java.lang.reflect.Constructor-API .

Constructor<?> constr = clazz.getConstructor(classTypeOfArgument);
Object instance = constr.newInstance(paramInstance);

注意:在这种情况下使用原始类型是一个相当糟糕的主意,因为看起来您已经知道您正在处理什么类型的类型。

@Shankar Saran Singh 这与运行时的动态类型创建绝对无关,并且您提供的代码片段根本无法解决作者的问题。

关于java.lang.NoSuchMethodException : package. ClassName.<init>() 使用 Class<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910990/

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