JAVA中反射机制二
2017-08-28 21:46
197 查看
声明:如需转载请说明地址来源:http://www.cnblogs.com/pony1223
反射二 利用反射创建对象
1.利用反射创建对象,首先我们创建一个类,类里面,我们知道构造函数有默认的构造函数,带参数的构造函数,私有的构造函数,如下,创建一个Person类:
2.利用反射创建出我们的Person类的实例,为了测试,因此上面在Person中有一个属性为public String name = "test"; 如果创建不出对象,那么会出现空指针现象。
代码如下:
3.若想通过类的不带参数的构造方法来生成对象,我们有两种方式:
(1)通过上面说的构造函数的方式反射出对象;(2)1.先获得Class对象,然后通过该Class对象的newInstance()方法直接生成即可:
Class<?> classType = String.class;
Object obj = classType.newInstance();
反射二 利用反射创建对象
1.利用反射创建对象,首先我们创建一个类,类里面,我们知道构造函数有默认的构造函数,带参数的构造函数,私有的构造函数,如下,创建一个Person类:
package study.reflect; import java.util.List; public class Person { /** * 为了测试用 */ public String name = "test"; public Person() { } public Person(String name) { System.out.println("name:"+name); } public Person(String name,int age) { System.out.println("name:"+name+",age:"+age); } private Person(List list) { System.out.println("list"); } }
2.利用反射创建出我们的Person类的实例,为了测试,因此上面在Person中有一个属性为public String name = "test"; 如果创建不出对象,那么会出现空指针现象。
代码如下:
package study.reflect; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; import org.junit.Test; /* * 利用反射解析出构造函数,使用构造函数创建对象 */ public class Demo02 { @Test public void test01() throws Exception { Class<?> clazz = Class.forName("study.reflect.Person"); Constructor constructor = clazz.getConstructor(null); Person person = (Person) constructor.newInstance(null); System.out.println(person.name); } @Test public void test02() throws Exception { Class<?> clazz = Class.forName("study.reflect.Person"); Constructor constructor = clazz.getConstructor(String.class); Person person = (Person) constructor.newInstance("hello"); System.out.println(person.name); } @Test public void test03() throws Exception { Class<?> clazz = Class.forName("study.reflect.Person"); Constructor constructor = clazz.getConstructor(String.class,int.class); Person person = (Person) constructor.newInstance("hello",123); System.out.println(person.name); } @Test public void test04() throws Exception { Class<?> clazz = Class.forName("study.reflect.Person"); Constructor constructor = clazz.getDeclaredConstructor(List.class); constructor.setAccessible(true); Person person = (Person) constructor.newInstance(new ArrayList()); System.out.println(person.name); } }
3.若想通过类的不带参数的构造方法来生成对象,我们有两种方式:
(1)通过上面说的构造函数的方式反射出对象;(2)1.先获得Class对象,然后通过该Class对象的newInstance()方法直接生成即可:
Class<?> classType = String.class;
Object obj = classType.newInstance();
相关文章推荐
- Java类加载机制和反射机制
- Java的反射机制详解(一)
- JAVA基础--JAVA中的反射机制详解
- java的反射机制浅谈
- 学习:java原理—反射机制
- Java 反射机制
- [java]反射机制
- java反射(3):反射机制
- JAVA中的反射机制
- JAVA的内省机制(introspector)与反射机制(reflection)
- JAVA 反射机制——获取类对象
- JAVA中的反射机制
- Java 反射机制中 getMethod()和getDeclaredField()区别
- Java的反射(reflect)机制的学习
- java中的反射机制
- Java实现Qt的SIGNAL-SLOT机制(保存到Map中,从而将它们关联起来,收到信号进行解析,最后反射调用)
- Java的反射机制
- Java的反射机制
- Java-反射机制
- java的反射机制_1