本帖最后由 克零岚 于 2013-3-8 19:16 编辑
你的System.out.println(Demo.class.getMethod());代码有错的(j即方法是有参数的,注意啦),jdk文档中是这样的public Method getMethod(String name,Class<?>...parameterTypes),很显然这个getMethod()不符合你的情景,如下是我修改后的代码,就改了main方法中的一些代码,请参阅:- import java.lang.reflect.Method;
- class Demo // extends Object
- {
- private int num;
- Demo(int num)
- {
- this.num = num;
- }
- public boolean equals(Object obj) // Object obj = new Demo();
- {
- if (!(obj instanceof Demo)) // 因为可以接受所有类,所以此处判断一下是否同类,更健壮
- // 当父类中已经提供了相同功能时,子类想建有自身特有内容的比较,这时就复写父类的功能,
- // 此时用到向下类型转换和类型判断。
- return false;
- Demo d = (Demo) obj; // 多态,向下转型
- return this.num == d.num;
- }
- public String toString() // 父类中的此功能没什么作用,一般都复写,还有equals等。
- {
- return "demo:" + num;
- }
- }
- class Person
- {
- }
- public class ObjectDemo
- {
- public static void main(String[] args)
- {
- Demo d1 = new Demo(4);
- Class c = d1.getClass();
- System.out.println(c);
- Method[] methods = Demo.class.getMethods();
- for (Method method : methods) {
- System.out.println(method);
- System.out.println(method.getName());
- }
-
-
- }
- }
复制代码 |