Làm thế nào để tìm hiểu xem một phương pháp có bị ghi đè bởi các lớp con không?Java: Làm cách nào để tìm ra phương thức được ghi đè từ lớp cơ sở?
Ví dụ,
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());
}
}
Với một thể hiện của B, làm thế nào để tôi biết nếu có các lớp thừa kế đã ghi đè phương pháp m() như B2?
Cập nhật: Câu hỏi của tôi không rõ ràng. Trên thực tế, tôi đã cố gắng để hỏi nếu điều này là có thể mà không cần phải suy nghĩ để phản ánh. Kiểm tra này được thực hiện trong một vòng lặp chặt chẽ và nó được sử dụng trong một hack hiệu suất để tiết kiệm một vài chu kỳ CPU.
Tất nhiên làm thế nào bạn đang không phải là việc của tôi, nhưng nếu bạn thực sự cần thông tin này, có OO thiết kế lẽ nghèo rình rập trong bóng tối – biziclop
Tôi không nghĩ rằng nó có thể mà không cần đến sự phản ánh. Và tôi đồng ý với biziclop, đó là dấu hiệu của thiết kế kém. –