java.lang.reflect.Constructor
2016-11-01 21:12
260 查看
java.lang.reflect.Constructor
一、Constructor类是什么
Constructor是一个类,位于java.lang.reflect包下。
在Java反射中 Constructor类描述的是 类的构造方法信息,通俗来讲 有一个类如下:
在Java反射中ConstructorDemo类中的构造方法ConstructorDemo()、ConstructorDemo(int num,String str)都是Constructor类的实例,这个Constructor类的实例描述了构造方法的全部信息。(包括:方法修饰符、方法名称、参数列表 等等)
二、如何获取Constructor类对象
一共有4种方法,全部都在Class类中:
- getConstructors():获取类中的公共方法
- getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
- getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
- getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
三、Constructor类中常用的方法
对于构造方法,我们就是用来创建类的实例的,但是在Java反射中需要注意的是:默认构造函数和带参数的构造方法创建实例的区别。
一、Constructor类是什么
Constructor是一个类,位于java.lang.reflect包下。
在Java反射中 Constructor类描述的是 类的构造方法信息,通俗来讲 有一个类如下:
1 package com.testReflect; 2 public class ConstructorDemo { 3 private int num; 4 private String str; 5 6 public ConstructorDemo(){ 7 num = 2; 8 str = "xixi"; 9 } 10 11 public ConstructorDemo(int num,String str){ 12 this.num = num; 13 this.str = str; 14 } 15 16 @Override 17 public String toString() { 18 return "ConstructorDemo [num=" + num + ", str=" + str + "]"; 19 } 20 }
在Java反射中ConstructorDemo类中的构造方法ConstructorDemo()、ConstructorDemo(int num,String str)都是Constructor类的实例,这个Constructor类的实例描述了构造方法的全部信息。(包括:方法修饰符、方法名称、参数列表 等等)
二、如何获取Constructor类对象
一共有4种方法,全部都在Class类中:
- getConstructors():获取类中的公共方法
- getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
- getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
- getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
三、Constructor类中常用的方法
对于构造方法,我们就是用来创建类的实例的,但是在Java反射中需要注意的是:默认构造函数和带参数的构造方法创建实例的区别。
1 package com.testReflect; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Modifier; 5 6 public class ConstructorTest { 7 public static void main(String[] args) throws Exception { 8 //使用反射第一步:获取操作类ConstructorDemo所对应的Class对象 9 Class<?> cls = Class.forName("com.testReflect.ConstructorDemo"); 10 11 //获取默认的构造函数 12 Constructor constructor1 = cls.getConstructor(new Class[]{}); 13 //获取构造函数信息 14 System.out.println("修饰符: "+Modifier.toString(constructor1.getModifiers())); 15 System.out.println("构造函数名: "+constructor1.getName()); 16 System.out.println("参数列表: "+constructor1.getParameterTypes()); 17 //通过默认的构造函数创建ConstructorDemo类的实例 18 Object obj = constructor1.newInstance(); 19 System.out.println("调用默认构造函数生成实例:"+obj.toString()); 20 21 System.out.println("==============================================="); 22 23 //获取带参数的构造函数 24 Constructor constructor2 = cls.getConstructor(new Class[]{int.class,String.class}); 25 System.out.println("修饰符: "+Modifier.toString(constructor2.getModifiers())); 26 System.out.println("构造函数名: "+constructor2.getName()); 27 System.out.println("参数列表: "+constructor2.getParameterTypes()); 28 //获取构造函数信息 29 //通过带参数的构造函数创建ConstructorDemo类的实例 30 Object obj2 = constructor2.newInstance(new Object[]{33,"haha"}); 31 System.out.println("调用带参数构造函数生成实例:"+obj2.toString()); 32 } 33 }
相关文章推荐
- java.lang.reflect.Constructor
- 利用java.lang.reflect.Constructor动态实例化对象
- java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual
- 直接topbar奔溃,出现 at java.lang.reflect.Constructor.constructNative(Native Method)
- Class.forName java.lang.reflect.Constructor反射调用有参构造函数和无参构造函数的方法
- litepal查询时报"java.lang.reflect.Constructor.getParameterTypes()"等类似问题
- Spring启动时报异常:No String constructor found on type [java.lang.reflect.Method]
- Java反射之java.lang.reflect.Constructor
- axis2 java.lang.reflect.InvocationTargetException
- Java.lang.reflect包介绍
- 解决spring+hibernate+struts2的java.lang.reflect.InvocationTargetException-->null异常
- java.lang.reflect.Method (java反射机制)
- java.lang.reflect.UndeclaredThrowableException原因和解决方法
- 使用Axis插件来从WSDL文件生成代码时"An error occurred while completing process -java.lang.reflect.InvocationTargetException"的错误
- java异常:java.lang.reflect.InvocationTargetException
- 第一次感受DI &amp; java.lang.reflect.* 学习
- net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
- Eclipse使用axis2生成客户端调用时最后一步出现an error occurred while completing process -java.lang.reflect.InvocationTargetException
- 新建T5工程报错--java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
- java.lang.reflect