黑马程序员技术交流社区
标题:
反射的基本步骤:1、获得Class对象
[打印本页]
作者:
星辉祝愿
时间:
2015-5-25 13:25
标题:
反射的基本步骤:1、获得Class对象
本帖最后由 星辉祝愿 于 2015-5-25 13:28 编辑
1、获得Class对象,就是获取到指定的名称的字节码文件对象。
获取这个Class对象,有三种方式:
1:通过每个对象都具备的方法getClass来获取。弊端:必须要创建该类对象,才可以调用getClass方法。
2:每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类。
前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。
3:使用的Class类中的方法,静态的forName方法。
指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可。
import java.lang.reflect.Method;
public class test1 {
public static void main(String[] args) throws Exception {
System.out.println(test1.class);
method_1();
}
public static void method_1() throws ClassNotFoundException{
// 1. 根据给定的类名来获得 用于类加载
Class c1 = Class.forName("fanshe.Student");
// 2. 如果拿到了对象,不知道是什么类型 用于获得对象的类型
Object obj = new Student();
Class c2 = obj.getClass();// 获得对象具体的类型
// 3. 如果是明确地获得某个类的Class对象 主要用于传参
Class c3 = Student.class;
System.out.println(c1.getName());
}
}
class Student{
private int age;
private String name;
/**
* @return age
*/
public int getAge() {
return age;
}
/**
* @param age 要设置的 age
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return name
*/
public String getName() {
return name;
}
/**
* @param name 要设置的 name
*/
public void setName(String name) {
this.name = name;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2