反射一

来源:互联网 发布:淘宝客店铺做裂变 编辑:程序博客网 时间:2024/06/07 21:47

反射机制获取类有三种方法

1.Class<?> Classc = Class.forName("com.dt.reflect.User"); 

2.Class<?> Classc = User.class;  

3. User Classcnew User();


Useruser =(User) Classc.newInstance(); //创建对象  

user.setId(1);
user.setName("张三");
user.setAge(28);
System.out.println(user);

但是如果如果User 类有参构造函数的话就会报错

Exception in thread "main" java.lang.InstantiationException: com.dt.reflect.User
at java.lang.Class.newInstance(Class.java:427)
at com.dt.reflect.Test.main(Test.java:10)
Caused by: java.lang.NoSuchMethodException: com.dt.reflect.User.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
... 1 more


处理办法:import java.lang.reflect.Constructor ;// 导入反射机制包


Class<?> tt = null;

tt= Class.forName("com.dt.reflect.User");
Constructor<?> cons[] = null ;
cons = tt.getConstructors() ;

// User user = tt.newInstance(); 没有构造参数的实例化
User user =(User)cons[0].newInstance(1,"张三",30);  //有构造函数参数的实例化
user.setId(1);
user.setName("张三");
user.setAge(28);
System.out.println(user);




0 0
原创粉丝点击