文档章节

Java基础----反射Reflect----Constructor

baibuxiha
 baibuxiha
发布于 2016/03/07 21:17
字数 500
阅读 88
收藏 2

获取类的构造器Constructor

    在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)    获取指定名称的注解

   



  

© 著作权归作者所有

baibuxiha
粉丝 6
博文 67
码字总数 33393
作品 0
私信 提问
Java面试基础篇——第十篇:反射的原理

什么是Java的反射机制?指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能调用它的任意一个方法。这种动态获取信息,以及动态调用对象方法的功能叫Jav...

developlee的潇洒人生
2018/07/24
161
0
Java反射机制

问题: 在运行时,对一个JAVA类,能否知道属性和方法;能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现。 目录 什么是JAVA的反射机制 JDK中提供的Reflection API JAVA反...

长平狐
2012/08/29
605
0
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
2018/05/15
333
0
08-《深度拆解JVM》之JVM是如何实现反射的?

一、问题引入 今天我们来讨论一下 Java 里的反射机制。反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。 举例来说,我们可以通过 Class ...

飞鱼说编程
2018/10/12
27
0
黑马程序员--JDK1.5新特性(二)

----------------------android培训、java培训、期待与您交流!---------------------- Java反射机制定义: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性、方法...

长平狐
2013/07/01
62
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
27分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
59分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部