通過Class類獲取對象(實(shí)例講解)
通過Class對象獲取對象的方式是通過class.newInstance()方式獲取,通過調(diào)用默認(rèn)構(gòu)造參數(shù)實(shí)例化一個對象。
/**
* Created by hunt on 2017/6/27.
* 測試的實(shí)體類
* @Data 編譯后會自動生成set、get、無慘構(gòu)造、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實(shí)例
try {
Person p = personClass.newInstance();//通過Class獲得Person實(shí)例
p.setAge(28);
p.setName("hunt");
System.out.println(p);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
提示:class.newInstance()是通過無參構(gòu)造函數(shù)實(shí)例化的,一個對象默認(rèn)是有一個無參構(gòu)造函數(shù),如果有一個有參構(gòu)造函數(shù),無參構(gòu)造函數(shù)就不存在了,在通過反射獲得對象會拋出 java.lang.InstantiationException 異常。
/**
* Created by hunt on 2017/6/27.
* 測試的實(shí)體類
*/
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){}//有參數(shù)構(gòu)造函數(shù)
}
/**
* Created by hunt on 2017/6/27.
*/
public class NewInstanceTest {
public static void main(String[] args) {
Class<Person> personClass = Person.class;//獲取Class實(shí)例
try {
Person p = personClass.newInstance();//通過Class獲得Person實(shí)例
p.setAge(28);
p.setName("hunt");
System.out.println(p.getAge()+"----"+p.getName());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

總結(jié):以后創(chuàng)建實(shí)體類的時候一定要帶上無參構(gòu)造函數(shù),以便以后使用反射的時候?qū)嵗瘜ο蟛粧伋霎惓!?/span>
以上這篇通過Class類獲取對象(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決IDEA?JDK9沒有module-info.java的問題
這篇文章主要介紹了解決IDEA?JDK9沒有module-info.java的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Python中scrapy框架的ltem和scrapy.Request詳解
這篇文章主要介紹了Python中scrapy框架的ltem和scrapy.Request詳解,Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似,不過,相比字典,Item提供了額外的保護(hù)機(jī)制,可以避免拼寫錯誤或者定義字段錯誤,需要的朋友可以參考下2023-09-09
spring task @Scheduled注解各參數(shù)的用法
這篇文章主要介紹了spring task @Scheduled注解各參數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Java selenium處理極驗(yàn)滑動驗(yàn)證碼示例
本篇文章主要介紹了Java selenium處理極驗(yàn)滑動驗(yàn)證碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10

