通過Class類獲取對(duì)象(實(shí)例講解)
通過Class對(duì)象獲取對(duì)象的方式是通過class.newInstance()方式獲取,通過調(diào)用默認(rèn)構(gòu)造參數(shù)實(shí)例化一個(gè)對(duì)象。
/**
* Created by hunt on 2017/6/27.
* 測(cè)試的實(shí)體類
* @Data 編譯后會(huì)自動(dòng)生成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í)例化的,一個(gè)對(duì)象默認(rèn)是有一個(gè)無參構(gòu)造函數(shù),如果有一個(gè)有參構(gòu)造函數(shù),無參構(gòu)造函數(shù)就不存在了,在通過反射獲得對(duì)象會(huì)拋出 java.lang.InstantiationException 異常。
/**
* Created by hunt on 2017/6/27.
* 測(cè)試的實(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í)體類的時(shí)候一定要帶上無參構(gòu)造函數(shù),以便以后使用反射的時(shí)候?qū)嵗瘜?duì)象不拋出異常。
以上這篇通過Class類獲取對(duì)象(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決IDEA?JDK9沒有module-info.java的問題
這篇文章主要介紹了解決IDEA?JDK9沒有module-info.java的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Python中scrapy框架的ltem和scrapy.Request詳解
這篇文章主要介紹了Python中scrapy框架的ltem和scrapy.Request詳解,Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似,不過,相比字典,Item提供了額外的保護(hù)機(jī)制,可以避免拼寫錯(cuò)誤或者定義字段錯(cuò)誤,需要的朋友可以參考下2023-09-09
spring task @Scheduled注解各參數(shù)的用法
這篇文章主要介紹了spring task @Scheduled注解各參數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java selenium處理極驗(yàn)滑動(dòng)驗(yàn)證碼示例
本篇文章主要介紹了Java selenium處理極驗(yàn)滑動(dòng)驗(yàn)證碼示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
基于Spring@Autowired注解與自動(dòng)裝配詳談
下面小編就為大家?guī)硪黄赟pring@Autowired注解與自動(dòng)裝配詳談。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
java針對(duì)電話號(hào)碼正則匹配實(shí)例
這篇文章主要介紹了java針對(duì)電話號(hào)碼正則匹配的方法,涉及java正則匹配與字符串操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

