[size=large]Employee是一个类,getName和raiseSalary是该类中的方法,现在通过Class类的getMethod方法获得获得这两个方法的方法指针,调用如下
Java code
Method m1=Employee.class.getMethod("getName");
Method m2=Employee.class.getMethod("raiseSalary",double.class);
[color=red]请问Employee.class.getMethod的class表示什么,去掉class可以么?[/color]
[/size]
Employee.class.getMethod 通过反射机制来获取 Employee 类中的方法,跟
[code="java"]
Employee e = new Employee();
e.getClass().getMethod
[/code]
是一样的效果的
getMethod是Class中的方法,当然不能去掉class了
JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.
概括一下:
反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。
例如我们可以通过类名来生成一个类的实例;
知道了方法名,就可以调用这个方法;知道了属性名就可以访问这个属性的值。
[code="java"]Class clazz=Employee.class;
Method m1=clazz.getMethod("getName");
Method m2=clazz.getMethod("raiseSalary",double.class);
[/code]
getMethod是Class类的方法
[quote]
public final class Classextends Objectimplements Serializable, GenericDeclaration, Type, AnnotatedElementClass 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
[/quote]
通俗地说,就是这样子。。。。。。。
java里有一个类叫做Class类,我们每次定义一个类的时候,比如User类,虚拟机加载的时候就会生成一个Class类的对象,User.class,通过User.class就可以知道user这个类有哪些属性和方法,然后才能载入这个User类,供我们调用
java反射也是基于这个class类
[code="java"]Method m1=Employee.class.getMethod("getName"); [/code]
这个就是说通过Employee.class这个对象的getMethod方法,获取到Employee类定义的getName方法