通过Class类获取对象(实例讲解)
作者:jingxian 时间:2023-05-19 14:12:58
通过Class对象获取对象的方式是通过class.newInstance()方式获取,通过调用默认构造参数实例化一个对象。
/**
* Created by hunt on 2017/6/27.
* 测试的实体类
* @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法
*/
@Data
public class Person {
private String name;
private int age;
}
/**
* Created by hunt on 2017/6/27.
*/
public class NewInstanceTest {
public static void main(String[] args) {
Class<Person> personClass = Person.class;//获取Class实例
try {
Person p = personClass.newInstance();//通过Class获得Person实例
p.setAge(28);
p.setName("hunt");
System.out.println(p);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
提示:class.newInstance()是通过无参构造函数实例化的,一个对象默认是有一个无参构造函数,如果有一个有参构造函数,无参构造函数就不存在了,在通过反射获得对象会抛出 java.lang.InstantiationException 异常。
/**
* Created by hunt on 2017/6/27.
* 测试的实体类
*/
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name,int age){}//有参数构造函数
}
/**
* Created by hunt on 2017/6/27.
*/
public class NewInstanceTest {
public static void main(String[] args) {
Class<Person> personClass = Person.class;//获取Class实例
try {
Person p = personClass.newInstance();//通过Class获得Person实例
p.setAge(28);
p.setName("hunt");
System.out.println(p.getAge()+"----"+p.getName());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
总结:以后创建实体类的时候一定要带上无参构造函数,以便以后使用反射的时候实例化对象不抛出异常。
标签:class类,获取,对象
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
一文详解C#中方法重载的底层玩法
2022-03-08 11:11:03
![](https://img.aspxhome.com/file/2023/7/94607_0s.png)
Java通过Fork/Join优化并行计算
2023-01-27 21:28:36
Java设计模式七大原则之单一职责原则详解
2022-05-12 20:48:58
C#中使用HttpDownLoadHelper下载文件实例
2023-05-13 13:13:14
c# 获取CookieContainer的所有cookies函数代码
2023-06-17 23:11:30
Java并发编程之CountDownLatch源码解析
2023-11-05 02:06:41
Java jvm中Code Cache案例详解
2022-02-04 17:00:53
Spring Boot集成Redis实现缓存机制(从零开始学Spring Boot)
2023-03-21 15:11:38
Android ImageView绘制圆角效果
2023-11-22 22:59:15
![](https://img.aspxhome.com/file/2023/3/138273_0s.jpg)
Android中如何获取视频文件的截图、缩略图
2022-06-29 04:24:03
c# WPF中自定义加载时实现带动画效果的Form和FormItem
2021-05-29 22:49:17
![](https://img.aspxhome.com/file/2023/0/88420_0s.gif)
java贪吃蛇游戏编写代码
2023-06-16 02:41:10
![](https://img.aspxhome.com/file/2023/3/74753_0s.jpg)
c# 实现语音聊天的实战示例
2021-11-18 06:29:20
![](https://img.aspxhome.com/file/2023/2/91312_0s.png)
解读JDK8踩坑JCE加密限制版本问题
2021-09-20 12:42:35
![](https://img.aspxhome.com/file/2023/2/96042_0s.png)
详解Android Activity中的几种监听器和实现方式
2022-11-02 11:26:05
c#在excel中添加超链接示例分享
2023-06-03 14:10:45
springboot+zookeeper实现分布式锁的示例代码
2022-02-05 08:48:48
![](https://img.aspxhome.com/file/2023/9/85469_0s.jpg)
JavaWeb验证码校验功能代码实例
2022-07-18 23:46:52
Java中遍历Map集合的5种方式总结
2023-04-29 13:14:25
Unity中的PostProcessBuild实用案例深入解析
2021-06-08 13:48:51