JAVA补强系列======反射一
2014-09-10 22:18
176 查看
package com.sysweal.demo03; import java.lang.reflect.Constructor; /** * 1:Class类对象提供如下常用方法: * * I: public Constructor getConstructor…… * II: public Method getMethod * III: public Field getField * * 以上三种只能获得public的构造函数,方法和成员变量 * I: public Constructor getDeclaredConstructor…… * II: public Method getDeclaredMethod * III: public Field getDeclaredField */ public class Reflect02 { public static void main(String[] args) throws Exception{ /** * 反射构造函数 */ Class clazz = Class.forName("com.sysweal.demo03.Person"); //解剖出公共无参的构造函数 Constructor c = clazz.getConstructor(null);//解剖出无参的构造函数 Object obj = c.newInstance(null);//得到构造函数new出对象 System.out.println(obj); //解剖出公共有参的构造函数 /** * 这里反射有参数的构造方法,方法体里面只能放对应方法的参数类型 */ Constructor c2 = clazz.getConstructor(String.class); Object obj2 = c2.newInstance("fucking");//得到构造函数new出对象 Person p2 = (Person) c2.newInstance("fucking");//得到构造函数new出对象 System.out.println(p2); //--------------------------------------------------------------------------------------- //解剖出私有有参的构造函数 /** * 1、因为声明是私有的,所以反射方法是:DeclaredConstructor * 2、因为构造方法是私有的,所以得设计访问权限,暴力反射 setAccessible */ Constructor c3 = clazz.getDeclaredConstructor(int.class); c3.setAccessible(true);//暴力反射,打开反射权限 Object obj3 = c3.newInstance(1);//得到构造函数new出对象 Person p3 = (Person) c3.newInstance(2);//得到构造函数new出对象 System.out.println(p3); } }
相关文章推荐
- JAVA补强系列======反射二
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
- Java系列笔记(2) - Java RTTI和反射机制
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法
- Java反射系列之Field
- Java系列笔记(2) - Java RTTI和反射机制
- 转载和积累系列 - java的反射
- Java之------类反射系列(三)
- JAVA反射系列之Method,java.lang.reflect.Method的使用
- Java系列笔记(2) - Java RTTI和反射机制
- Java之------类反射系列(一)
- java基础巩固系列(三):成员变量反射的Field类
- java中反射系列一
- java系列-反射 Reflection
- Java学习系列(二十)Java面向对象之反射详解
- JAVA反射系列之Method,java.lang.reflect.Method的使用。
- JAVA补强系列======枚举
- Java系列笔记(2) - Java RTTI和反射机制
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
- Java之------类反射系列(二)