我是JAVA新手我正在努力学习reflection.我想获得特定的构造函数(选择示例形式here)来self的类(class):publicclassExample1{publicExample1(){}publicExample1(inti){}publicExample1(Strings){System.out.println("usingparam="+s);}publicstaticvoidmain(String[]args)throwsException{Class[]paramTypes=String.class.getClasses();Constructorctor=E
如果我有一个带有参数化泛型的构造函数的类:publicclassFoo{publicFoo(Mapdata){...}}...如果我想调用,我该如何引用参数化Map的类:Constructorconstructor=cls.getConstructor(/*theMapclass!*/)(其中cls是Foo类。)我想做这样的事情:Constructorconstructor=cls.getConstructor(Map.class);...但这行不通。我相信对此有一个简单的答案! 最佳答案 在运行时,这:Map其实就是一个Map,没
是否可以使用getConstructor获取下面类X的构造函数?publicclassA{}publicclassY{}publicclassXextendsY{publicX(Aa,Y[]yy){}publicvoidsomeMethod()throwsSecurityException,NoSuchMethodException{Classclazz=X.class;Constructorc=clazz.getConstructor(newClass[]{A.class,/*whatdoIputinhereforthearrayofYs?*/});}}谢谢
在通用类中Class方法getConstructors()具有未知泛型类型参数的返回类型而不是T.原因在javadoc中有解释。NotethatwhilethismethodreturnsanarrayofConstructorobjects(thatisanarrayofconstructorsfromthisclass),thereturntypeofthismethodisConstructor[]andnotConstructor[]asmightbeexpected.Thislessinformativereturntypeisnecessarysinceafterbeing
众所周知,Java反射提供了Class.getConstructors方法,但是Constructor[]的顺序如何?数组?比如我创建了Person类,有3个构造方法:publicPerson(){}publicPerson(intage){this.age=age;}publicPerson(intage,Stringname){this.age=age;this.name=name;}通过调试,我发现构造函数数组的顺序是这样的:0=publicxxx.Person(int)1=publicxxx.Person(int,java.lang.String)2=publicxxx.Per
对于没有参数的构造函数,我似乎无法使用getConstructor。我不断收到以下异常:java.lang.NoSuchMethodException:classname.()代码如下:interfaceInfoInterface{StringgetClassName();StringgetMethodName();StringgetArgument();}classasaimplementsInfoInterface{@OverridepublicStringgetClassName(){return("jeden");}@OverridepublicStringgetMethodN
我正在使用反射来构造一个将文件作为参数的类(ConfigBuilder):ClassmyClassType=Class.forName(className);Class[]types=newClass[]{File.class};Constructorcons=myClassType.getConstructor(types);Object[]constructorArgs=newObject[]{myFile};cb=(ConfigBuilder)cons.newInstance(constructorArgs);但是我收到这个警告:warning:[unchecked]unchec
我注意到在Java反射API中有两种不同的方法来调用构造函数:getDeclaredConstructors/getConstructors方法。尽管Java文档略有不同(getDeclaredConstructors似乎暗示它返回所有构造函数,而不是公共(public)构造函数),但不清楚为什么API明确支持这两种不同的方法。更重要的是,我想知道:如果我们动态调用类,什么时候一种方法比另一种更可取?比如访问私有(private)构造函数的目的是什么? 最佳答案 getDeclaredConstructors(当你想要所有构造函数时