-2
부모 클래스의 서브 클래스가 아니라 내 서브 클래스에서 오버라이드 된 메소드 만 가져와야합니다. 예를 들어리플렉션을 사용하여 오버라이드 된 메소드 가져 오기
는 :
class Foo {
public void doStuff(){
}
public void doStuff2(){
}
}
class Bar extends Foo{
public void doStuff(){
}
public void subDoStuff(){
}
}
난 반사는 doStuff()
및 subDoStuff()
보여주고 싶다. 현재 코드를 사용 중입니다.
for (Method m : mClass.getDeclaredMethods()) {
m.getName();
}
그러나 모든 방법이 나열되어 있습니다.
해결! 코드가 정확합니다. 방금 나는 버팀대, 바보 같은 버그를 잊었다.
if (m.getName().equals("onBackPressed")) {//<-
System.out.println("ethod: " + m.getName());
return true;
}//<----
* "나는 내 서브 클래스에서 오버라이드 (override) 만 방법을 얻을 필요"시도해야한다? –
'getDeclaredMethods'의 Javadoc에 따르면 :'public, protected, default (패키지) 접근과 private 메소드를 포함하지만 상속 된 메소드는 제외합니다. ' 그래서이'getDeclaredMethods'에 따르면 상속 된 메소드를 반환하지 않습니다. 당신이 얻고 있다고 생각하지 않는 방법은 무엇입니까? –
예, 이유가 무엇입니까? 또한 시간을내어 java.lang.Class의 javadoc을 읽으십시오. # getDeclaredMethods() – dkateros