软件编程
位置:首页>> 软件编程>> java编程>> 通过Class类获取对象(实例讲解)

通过Class类获取对象(实例讲解)

作者:jingxian  发布时间:2023-05-19 14:12:58 

标签:class类,获取,对象

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

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com