三、JAVA反射机制提供了什么功能
Java反射机制提供如下功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判段任意一个类所具有的成员变量和方法
在运行时调用任一个对象的方法
在运行时创建新类对象
在使用Java的反射功能时,基本首先都要获取类的Class对象,再通过Class对象获取其他的对象。
这里首先定义用于测试的类:
View Code?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
classType{ publicintpubIntField; publicString pubStringField; privateintprvIntField;
publicType(){ Log("Default Constructor"); }
Type(intarg1, String arg2){ pubIntField = arg1; pubStringField = arg2;
Log("Constructor with parameters"); }
publicvoidsetIntField(intval) { this.prvIntField = val; } publicintgetIntField() { returnprvIntField; }
privatevoidLog(String msg){ System.out.println("Type:"+ msg); } }
classExtendTypeextendsType{ publicintpubIntExtendField; publicString pubStringExtendField; privateintprvIntExtendField;
publicExtendType(){ Log("Default Constructor"); }
ExtendType(intarg1, String arg2){ pubIntExtendField = arg1; pubStringExtendField = arg2;
Log("Constructor with parameters"); }
publicvoidsetIntExtendField(intfield7) { this.prvIntExtendField = field7; } publicintgetIntExtendField() { returnprvIntExtendField; }
privatevoidLog(String msg){ System.out.println("ExtendType:"+ msg); } }
|
1、获取类的Class对象
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。获取类的Class对象有多种方式:
调用getClass |
Boolean var1 = true; Class<?> classType2 = var1.getClass(); System.out.println(classType2); 输出:class java.lang.Boolean |
运用.class 语法 |
Class<?> classType4 = Boolean.class; System.out.println(classType4); 输出:class java.lang.Boolean |
运用static method Class.forName() |
Class<?> classType5 = Class.forName("java.lang.Boolean"); System.out.println(classType5); 输出:class java.lang.Boolean |
运用primitive wrapper classes的TYPE 语法 这里返回的是原生类型,和Boolean.class返回的不同 |
Class<?> classType3 = Boolean.TYPE; System.out.println(classType3); 输出:boolean |
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。