摘要:本文主要向大家介绍了JAVA语言基础学习之反射,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言基础学习之反射,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
获取反射的三种方式java.util.Date
//类名.class
Class claz1 = Date.class;
//对象.getClass();
Class claz2 = new Date().getClass();
//Class.forName(); 此方法在框架中应用甚广
Class claz3 = Class.forName("java.util.Date");
//同一个类在jvm中只会加载一份字节码
System.out.println(claz1==claz2);//true
System.out.println(claz2==claz3);//true
System.out.println(claz1==claz3);//true
八大基本类型
//八大基本类型和void是没有类的概念,但是却都有class属性所以
Class intClass = int.class;
Class voidClass = void.class;
//所有的包装类型中都有个TYPE属性返回的是该包装类的基本类型的字节码
//(Integer)的基本类型就是int但是泛型无法使用基本类型所以还是只能写(Integer)但实际上是int.class
Class
System.out.println(type == intClass);//true
数组类型
//由于并没有class来描述 数组 这个特殊类所以在数组中只能使用 对象和类
//使用对象很好理解 但是为什么能使用 类.class呢
int[] a = {1,2};
Class
Class
//Class类的api上写着这么一句话 所有的类型和维数都相同的数组共用一份字节码
//看下面代码
Class class3 = int[].class;
Class class4 = int[][].class;
System.out.println(class3 == class4);//false
Class class5 = int[].class;
Class class6 = String[].class;
System.out.println(class5 == class6);//false
int[] a7 = {1,2};
int[] a8 = {1,2,3,4};
Class class7 = a7.getClass();
Class class8 = a8.getClass();
System.out.println(class7 == class8);//true
通过反射来获取构造器Constructor
//getConstructors() 返回包含一个数组 Constructor对象反射由此表示的类的所有公共构造 类对象。
Class
Constructor[] constructors = clz.getConstructors();//两个
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
//getDeclaredConstructors() 返回包含一个数组 Constructor对象反射由此表示的类的所有构造 类对象(包括private)。
Constructor[] constructors2 = clz.getDeclaredConstructors();//三个
for (Constructor constructor : constructors2) {
System.out.println(constructor);
}
//getConstructor(类... parameterTypes) 返回指定的一个 Constructor对象(只能返回public修饰的)。
Constructor
System.out.println(constructor);
Constructor
System.out.println(constructor2);
Constructor
//getDeclaredConstructor(类... parameterTypes) 返回一个 Constructor对象(获取一个,忽略权限修饰符)。
Constructor
System.out.println(constructor4);
User类
class User{ public User(){ } public User(String name){ } private User(String name,int age){ } }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号