如何找出一個方法是否被子類覆蓋?Java:如何找到一個方法是否從基類重寫?
例如,
public class Test {
static public class B {
public String m() {return "From B";};
}
static public class B1 extends B {
}
static public class B2 extends B {
public String m() {return "from B2";};
}
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) {
B b1 = new B1();
System.out.println("b1 = " + b1.m());
B b2 = new B2();
System.out.println("b1 = " + b2.m());
}
}
鑑於B的一個實例,如何知道如果任何派生類已重寫方法米()之類B2?
更新:我的問題不清楚。其實,我試圖在不訴諸反思的情況下這樣做是否可行。這個檢查是在一個緊密的循環中完成的,並且它被用於性能攻擊以節省幾個CPU週期。
當然,你的代碼是怎麼關我的事,但如果你確實需要這些信息,有可能是窮人OO設計潛伏在暗處 – biziclop 2011-01-27 21:15:25
我不認爲這是可能的,而不訴諸反思。我同意biziclop,這是一個設計不佳的標誌。 – 2011-01-28 07:53:07