为啥Java反射对象必须有一个无参数的构造方法
其实也可以不提供,只不过这样的话构造对象的时候一定要先拿到有参数的构造方法,然后赋予参数再构建对象。比如package cn.mldn.demo; import java.lang.reflect.Constructor; class Person{ // CTRL + K private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person "; }} public class TestDemo{ public static void main(String args) throws Exception { Class\u0026lt;?\u0026gt; cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象 // 取得指定参数类型的构造方法 Constructor\u0026lt;?\u0026gt; cons = cls.getConstructor(String.class, int.class); Object obj = cons.newInstance("张三", 20); // 为构造方法传递参数 System.out.println(obj); }}
■网友
一般来说反射是这样实现的:Class class = Class.forName(className);Object object= class.newInstance();所以需要一个无参的构造器来生成对象(因为没有给初始值)。
■网友
【为啥Java反射对象必须有一个无参数的构造方法】 普通反射需要知道构造方法的参数,但也可以不调用构造方法,如Objenesis,这样就不用关心构造方法的参数。
■网友
没有这个说法,只是你反射命令用错了。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 为啥到现在你还没有女朋友 ?
