通过Class对象获取对象的方式是通过class.newInstance()方式获取,通过调用默认构造参数实例化一个对象。
1 /** 2 * Created by hunt on 2017/6/27. * 测试的实体类 4 * @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法 5 */ 6 @Data 7 public class Person { 8 private String name; 9 private int age;10 }
1 /** 2 * Created by hunt on 2017/6/27. 3 */ 4 public class NewInstanceTest { 5 public static void main(String[] args) { 6 Class<Person> personClass = Person.class;//获取Class实例 7 try { 8 Person p = personClass.newInstance();//通过Class获得Person实例 9 p.setAge(28);10 p.setName("hunt");11 System.out.println(p);12 } catch (InstantiationException e) {13 e.printStackTrace();14 } catch (IllegalAccessException e) {15 e.printStackTrace();16 }17 }18 }
提示:class.newInstance()是通过无参构造函数实例化的,一个对象默认是有一个无参构造函数,如果有一个有参构造函数,无参构造函数就不存在了,在通过反射获得对象会抛出 java.lang.InstantiationException 异常。
1 /** 2 * Created by hunt on 2017/6/27. 3 * 测试的实体类 4 */ 5 6 public class Person { 7 private String name; 8 private int age; 9 10 public String getName() {11 return name;12 }13 14 public int getAge() {15 return age;16 }17 18 public void setName(String name) {19 this.name = name;20 }21 22 public void setAge(int age) {23 this.age = age;24 }25 26 public Person(String name,int age){}//有参数构造函数27 }
1 /** 2 * Created by hunt on 2017/6/27. 3 */ 4 public class NewInstanceTest { 5 public static void main(String[] args) { 6 Class<Person> personClass = Person.class;//获取Class实例 7 try { 8 Person p = personClass.newInstance();//通过Class获得Person实例 9 p.setAge(28);10 p.setName("hunt");11 System.out.println(p.getAge()+"----"+p.getName());12 } catch (InstantiationException e) {13 e.printStackTrace();14 } catch (IllegalAccessException e) {15 e.printStackTrace();16 } } }
总结:以后创建实体类的时候一定要带上无参构造函数,以便以后使用反射的时候实例化对象不抛出异常。
以上是通过Class类获取对象详解的详细内容。更多信息请关注PHP中文网其他相关文章!
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
3 周前ByDDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前ByDDD
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用