Class是反射操作中最为重要的程序类,获取了Class类的实例就意味着获取了类的全部操作权限。
1、利用Object类中提供的getClass()方法获取实例化对象的例子:
package com.mydemo;
public class ReflectionMechanismDemo {
public static void main(String[] args) {
/**
* 【操作特点】需要获取一个类的实例化对象后才可以获取Class类实例
*/
Member member = new Member(); // 实例化Member类对象
Class<?> clazz = member.getClass(); // 获取Class类实例化对象
System.out.println(clazz);
}
}
class Member {
}
运行结果:
class com.mydemo.Member
2、使用“类.class”形式获取指定类或接口的Class实例化对象的例子:
package com.mydemo;
public class ReflectionMechanismDemo {
public static void main(String[] args) {
/**
* 【操作特点】直接通过一个类的完整名称可以获取Class类实例,
* 需要编写import或完整类名称
*/
// 利用JVM的支持方式,通过一个类直接获取了Class实例化对象
Class<?> clazz = Member.class; // 获取Class类实例化对象
System.out.println(clazz);
}
}
class Member {
}
运行结果:
class com.mydemo.Member
3、使用Class类内部提供的forName()方法根据类的完整名称获取实例化对象的例子:
package com.mydemo;
public class ReflectionMechanismDemo {
public static void main(String[] args) throws Exception {
/**
* 【操作特点】通过名称字符串(包、类)可以获取Class类实例,可以不适用import导入
*
* 由于字符串的支持较多并且拼接方便,这种获取Class类实例的方式是最灵活的
*
* 如果字符串定义的类名称不存在,则会出现ClassNotFoundException异常
*/
Class<?> clazz = Class.forName("com.mydemo.Member"); // 获取Class类实例化对象
System.out.println(clazz);
}
}
class Member {
}
运行结果:
class com.mydemo.Member