Java基础----反射Reflect----Constructor
2016-03-07 00:00
513 查看
获取类的构造器Constructor
在Java反射中一般方法名中包含getDelcared的方法都是只能访问该类的所有访问权限类型的构造器、方法或者成员变量和类变量,包括public、default(默认----方法名前什么都不写)、protecte、private;而其他的只能访问权限类型为public的方法或成员变量 包括继承过来的父类的public方法和成员变量、类变量,只能访问本类的public构造器方法。
a、public Constructor<?>[] getConstructors()
返回该类中所有public的构造方法
b、public Constructor<?>[] getDeclaredConstructors()
返回
运行结果:
同理,
c、public Constructor<T> getConstructor(Class<?>... parameterTypes)
获取该类的public构造器形参参数类型为parameterTypes数组的构造器
d、public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
获取该类的private、public、protected、default类型的指定形参参数的构造器
运行结果:
Constructor类中部分其他方法:
public T newInstance(Object ... initargs) 创建并初始化一个类的实例
public Annotation[] getDeclaredAnnotations() 获取构造器上的所有注解
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) 获取指定名称的注解
在Java反射中一般方法名中包含getDelcared的方法都是只能访问该类的所有访问权限类型的构造器、方法或者成员变量和类变量,包括public、default(默认----方法名前什么都不写)、protecte、private;而其他的只能访问权限类型为public的方法或成员变量 包括继承过来的父类的public方法和成员变量、类变量,只能访问本类的public构造器方法。
a、public Constructor<?>[] getConstructors()
返回该类中所有public的构造方法
b、public Constructor<?>[] getDeclaredConstructors()
返回
Constructor对象的一个数组,这些对象反映 此
Class对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法
public class SubClass { private SubClass(){ } private SubClass(String s,String s1){ } public SubClass(String s){ } protected SubClass(int i){ } public static void main(String[] args) { try { Class clz = SubClass.class; Constructor[] cons = clz.getConstructors(); for (Constructor constructor : cons) { System.out.print(constructor.getModifiers()+"--");//权限 System.out.println(constructor.toGenericString());//构造器名称 } System.out.println("----------"); Constructor[] cons1 = clz.getDeclaredConstructors(); for (Constructor constructor : cons1) { System.out.print(constructor.getModifiers()+"--");//权限 System.out.println(constructor.toGenericString());//构造器 } } catch (Exception e) { e.printStackTrace(); } } }
运行结果:
1--public cn.trip.core.servlet.SubClass(java.lang.String) ---------- 4--protected cn.trip.core.servlet.SubClass(int) 1--public cn.trip.core.servlet.SubClass(java.lang.String) 2--private cn.trip.core.servlet.SubClass(java.lang.String,java.lang.String) 2--private cn.trip.core.servlet.SubClass()
同理,
c、public Constructor<T> getConstructor(Class<?>... parameterTypes)
获取该类的public构造器形参参数类型为parameterTypes数组的构造器
d、public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
获取该类的private、public、protected、default类型的指定形参参数的构造器
public class SubClass { private SubClass(){ } private SubClass(String s,String s1){ } public SubClass(String s){ } protected SubClass(int i){ } public static void main(String[] args) { try { Class clz = SubClass.class; Constructor constructor = clz.getConstructor(String.class); System.out.print(constructor.getModifiers()+"--");//权限 System.out.println(constructor.toGenericString());//构造器名称 System.out.println("----------"); Constructor constructor1 = clz.getDeclaredConstructor(String.class,String.class); System.out.print(constructor1.getModifiers()+"--");//权限 System.out.println(constructor1.toGenericString());//构造器 } catch (Exception e) { e.printStackTrace(); } } }
运行结果:
1--public cn.trip.core.servlet.SubClass(java.lang.String) ---------- 2--private cn.trip.core.servlet.SubClass(java.lang.String,java.lang.String)
Constructor类中部分其他方法:
public T newInstance(Object ... initargs) 创建并初始化一个类的实例
public Annotation[] getDeclaredAnnotations() 获取构造器上的所有注解
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) 获取指定名称的注解
相关文章推荐
- JAVA设计模式
- java加密解密_____MD5加密(用户名映射(用户名和密码)串)唯一性
- Mybatis
- 5.4 Spring AOP
- java 对象集合转换为树形对象集合
- ActiveMQ 学习笔记系列
- Spring中 @Autowired注解与@Resource注解的区别
- Java的参数传递
- java单例模式
- 20145328 《Java程序设计》第1周学习总结
- java中类/对象的初始化顺序以及静态代码块的使用
- java设计模式原则
- java精品博客收集
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建型模式(附实例和详解)
- Java经典设计模式之五大创建模式(附实例和详解)
- JavaWeb之文件上传篇,
- 第六章 访问权限控制
- java中链表功能的实现