这很可能是一个愚蠢的问题,但是我是Java的新手,所以…
我目前有一些代码,目前正在使用
clazz.asSubclass(asSubclassOfClass).getConstructor().newInstance()
我需要将一些参数传递给构造函数,因此我想将其更改为:
clazz.asSubclass(asSubclassOfClass).getConstructor(params).newInstance(args)
我不明白的是,我需要以 参数形式 传递什么,我需要以 args 传递什么。
假设我想传入一个字符串“ howdy”和一些名为XyzObj的XYZ类型的对象。我该如何指定呢?我将通过什么作为参数,而将通过什么作为参数?
在Java中,这称为Reflection。
假设该类具有此构造函数,否则我相信您将获得NoSuchMethod异常。
clazz.asSubclass(asSubclassOfClass)
.getConstructor(String.class,XYZ.class)
.newInstance("howdy",XyzObj);
既然您是Java的新手,那么让我给您一个简单的方法,以便您了解执行此操作时的实际情况。
假设您有以下课程:
public class ParentClazz{
String someVar;
public ParentClazz(){
someVar="test";
}
public ParentClazz(String someVar){
System.out.println("I have been invoked");
this.someVar=someVar;
}
}
然后,您具有以下主要方法:
public static void main(String[] args) throws ParseException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
ParentClazz.class.asSubclass(ParentClazz.class).getConstructor(String.class).newInstance("howdy");
}
如果运行此命令,您会注意到控制台输出打印消息-我已被调用。这意味着您使用反射调用了ParentClazz的构造函数。
如果方案允许您执行相同的操作,则可以使用标准的对象创建过程:
ParentClazz clazz = new ParentClazz("howdy");
希望这可以帮助您理解。
组件中传递的属性可以在块表达式中返回结果。 下表列出了使用块参数的不同方法 - S.No. BlockParam方式和描述 1 从具有yield的组件返回值 可以使用yield选项从组件返回值。 2 支持块和非块组件使用 您可以使用hasBlock属性支持单个组件使用块和非块组件。
问题内容: 以下工作正常时,是和等,但它失败了,给了。 这是包装类或其他类的问题吗? 编辑:做到这一点的方式-学分应该去吉加尔。 问题答案: 因为没有no- arg(default)构造函数,所以将在内部调用默认构造函数
问题内容: 我在Netbeans 7.2上遇到此错误,它说ClassNotFoundexception和InstantationException。我真的在这个问题上陷入困境。请帮助我。 问题答案: 那么这个简单的方法呢? 我也想知道为什么您要用这种方式连接数据库?最好让服务器对其进行管理。 首先像这样配置(如果您使用的是tomcat): 然后,简单地从servlet / etc中的该资源获取连接
描述 (Description) java.lang.reflect.Constructor.newInstance(Object... initargs)方法使用此Constructor对象表示的构造函数,使用指定的初始化参数创建和初始化构造函数声明类的新实例。 各个参数自动展开以匹配原始形式参数,并且原始参数和参考参数都根据需要进行方法调用转换。 声明 (Declaration) 以下是jav
我已经使用Kotlin创建了一个片段,您知道在Java中有一个方便的静态方法来设置片段参数。像这样: 我试图在Kotlin中使用一个同伴对象来实现这一点,因为它是静态的。以下是我到目前为止所做的编译: 如何传入?
默认值为加粗项,所有参数不区分大小写。 Name Options switch *undefined, could be any valid macro name that's not defined in the shader priority default(128), could be any number between max(255) and min(0) stage default,