通过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类获取对象(实例讲解)

总结:以后创建实体类的时候一定要带上无参构造函数,以便以后使用反射的时候实例化对象不抛出异常。

标签:class类,获取,对象
0
投稿

猜你喜欢

  • 一文详解C#中方法重载的底层玩法

    2022-03-08 11:11:03
  • 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
  • Android中如何获取视频文件的截图、缩略图

    2022-06-29 04:24:03
  • c# WPF中自定义加载时实现带动画效果的Form和FormItem

    2021-05-29 22:49:17
  • java贪吃蛇游戏编写代码

    2023-06-16 02:41:10
  • c# 实现语音聊天的实战示例

    2021-11-18 06:29:20
  • 解读JDK8踩坑JCE加密限制版本问题

    2021-09-20 12:42:35
  • 详解Android Activity中的几种监听器和实现方式

    2022-11-02 11:26:05
  • c#在excel中添加超链接示例分享

    2023-06-03 14:10:45
  • springboot+zookeeper实现分布式锁的示例代码

    2022-02-05 08:48:48
  • JavaWeb验证码校验功能代码实例

    2022-07-18 23:46:52
  • Java中遍历Map集合的5种方式总结

    2023-04-29 13:14:25
  • Unity中的PostProcessBuild实用案例深入解析

    2021-06-08 13:48:51
  • asp之家 软件编程 m.aspxhome.com