01_反射_02_反射类的构造方法
生活随笔
收集整理的這篇文章主要介紹了
01_反射_02_反射类的构造方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【工程截圖】
?
?
【Person.java】 //將要被反射的類
package com.Higgin.reflect; import java.util.List;public class Person {private String name="NULL";private int age=0;public Person(){System.out.println("構(gòu)造方法:Person()");}public Person(String name){System.out.println("構(gòu)造方法:Person(String name)");this.name=name;}public Person(String name,int age){this.name=name;this.age=age;System.out.println("構(gòu)造方法:Person(String name,int age)");}/*** 注意:是private 私有的!!!!!!!!*/private Person(List list){System.out.println("構(gòu)造方法:Person(List list)");System.out.println("list.get(0):"+list.get(0));}public void sayHello(){System.out.println(name+" say: hello world!");System.out.println("I'm "+age+" years old");} }【情況一】
【Demo01.java】測(cè)試反射無參構(gòu)造方法Person()
/** 反射Person類的 Person()構(gòu)造方法,創(chuàng)建類的對(duì)象* @throws Exception*/@Testpublic void test1() throws Exception{Class clazz=Class.forName("com.Higgin.reflect.Person");//反射構(gòu)造方法:public Person()Constructor c=clazz.getConstructor(null); Person p=(Person)c.newInstance(null);p.sayHello();}【運(yùn)行結(jié)果】
?
【情況二】
【Demo01.java】測(cè)試反射有參構(gòu)造方法Person(Strng name)
/** 反射構(gòu)造方法:public Person(String name)*/@Testpublic void test2() throws Exception{Class clazz=new Person().getClass(); //注意,這里其實(shí)已經(jīng)先創(chuàng)建了一個(gè)對(duì)象(因?yàn)閚ew Person())//反射構(gòu)造方法:public Person(String name)Constructor c=clazz.getConstructor(String.class);Person p=(Person) c.newInstance("Jack");p.sayHello();}【運(yùn)行結(jié)果】
?
【情況三】
【Demo01.java】測(cè)試Person(String name,int age)的情況
/** 反射構(gòu)造方法:public Person(String name,int age)*/@Testpublic void test3() throws Exception{Class clazz=Person.class;//反射構(gòu)造方法:public Person(String name,int age)Constructor c=clazz.getConstructor(String.class,int.class);Person p=(Person) c.newInstance("Jack",18);p.sayHello();}【運(yùn)行結(jié)果】
?
?【情況三】
【Dem01.java】測(cè)試private Person(List list)的i情況,注意是私有的
/** 注意是私有的* 反射構(gòu)造方法:private Person(List list)*/@Testpublic void test4() throws Exception{Class clazz=Person.class;//反射構(gòu)造方法:private Person(List list)Constructor c=clazz.getDeclaredConstructor(List.class); c.setAccessible(true); //暴力反射,沒有這句會(huì)出錯(cuò)的!!!!!!!!List list=new ArrayList();list.add("6666666");Person p=(Person) c.newInstance(list);p.sayHello();}【運(yùn)行結(jié)果】
?
?
【創(chuàng)建對(duì)象的另外一種寫法】等同于test1()的測(cè)試方法
/*** 創(chuàng)建對(duì)象的另外一種方式* @throws Exception*/@Testpublic void test5() throws Exception{Class clazz=Class.forName("com.Higgin.reflect.Person");Person p=(Person)clazz.newInstance(); //本質(zhì)就是反射類的無參構(gòu)造方法反射對(duì)象 p.sayHello();}【運(yùn)行結(jié)果】
?
轉(zhuǎn)載于:https://www.cnblogs.com/HigginCui/p/5767098.html
總結(jié)
以上是生活随笔為你收集整理的01_反射_02_反射类的构造方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android:生命周期案例
- 下一篇: iPhone将NSString转换编码集