getDeclaringClass()
1. 作用
“这个方法最初是在哪个类里写的?”
class Animal {
public void eat() { }
}
Animal animal = new Animal();
Method method = animal.getClass().getMethod("eat");
Class<?> declarer = method.getDeclaringClass(); // 返回 Animal
2. 对于重写的方法
返回的是重写它的那个类
class Animal {
public void eat() { }
}
class Dog extends Animal {
@Override
public void eat() { } // 重写了
}
Dog dog = new Dog();
Method method = dog.getClass().getMethod("eat");
Class<?> declarer = method.getDeclaringClass(); // 返回 Dog
3. 对于继承的方法
返回的是最初定义这个方法的父类
class Animal {
public void eat() { } // 最初在这里定义
}
class Dog extends Animal {
// 没有重写,直接继承
}
Dog dog = new Dog();
Method method = dog.getClass().getMethod("eat");
Class<?> declarer = method.getDeclaringClass(); // 返回 Animal
5537

被折叠的 条评论
为什么被折叠?



