反射基础

来源:互联网 发布:砺剑出题 网络 编辑:程序博客网 时间:2024/04/30 12:08
package com.hao947.java.reflectDemo;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.List;import org.junit.Test;//解剖类的构造函数,创建类的对象public class Demo2 {// 反射构造函数:public Person()@Testpublic void text1() throws Exception {Class clazz = Class.forName("com.hao947.java.reflectDemo.Person");Constructor c = clazz.getConstructor(null);Person p = (Person) c.newInstance(null);System.out.println(p.name);}// 反射构造函数:public Person(String name)@Testpublic void text2() throws Exception {Class clazz = Class.forName("com.hao947.java.reflectDemo.Person");Constructor c = clazz.getConstructor(String.class);Person p = (Person) c.newInstance("xxxx");System.out.println(p.name);}// 反射构造函数:public Person(String name , int password)@Testpublic void text3() throws Exception {Class clazz = Class.forName("com.hao947.java.reflectDemo.Person");Constructor c = clazz.getConstructor(String.class, int.class);Person p = (Person) c.newInstance("xxx", 12);System.out.println(p.name);}// 反射构造函数:private Person(List list)@Testpublic void text4() throws Exception {Class clazz = Class.forName("com.hao947.java.reflectDemo.Person");Constructor c = clazz.getDeclaredConstructor(List.class);c.setAccessible(true);// 暴力反射Person p = (Person) c.newInstance(new ArrayList());System.out.println(p.name);}// 创建对象的别外一种途径 等效于test1@Testpublic void text5() throws Exception {Class clazz = Class.forName("com.hao947.java.reflectDemo.Person");Person p = (Person) clazz.newInstance();System.out.println(p.name);}}
package com.hao947.java.reflectDemo;import java.util.List;public class Person {public String name = "str";public Person() {System.out.println("反射无惨");}public Person(String name) {System.out.println("反射名字");}public Person(String name, int password) {System.out.println("反射名字密码" + name + ":" + password);}private Person(List list) {System.out.println("反射List");}}


原创粉丝点击