我有以下程序,獲取超父類的方法名稱層次的子類
class A
{
int i;
B b_obj = new B();
public void classAMethodStart()
{
system.out.println("class a method");
b_obj.classBMethod();
}
}
class B extends Class C
{
public void classBMethod()
{
methodInClassC();
}
}
class C
{
public void methodInClassC()
{
//.. to do stuff
//I want to get the ClassA method name here
this.getClass().getName();
}
}
,當我嘗試以下方法this.getClass().getName()
,它給人的
java.lang.ClassB輸出
預期的輸出我要打印的是:
classAMethodStart()
你可以包含對'this.getClass()。getName()'的調用嗎? – jrtapsell
A類是*不是* B或C的父類/超類。從類C的角度來看,'classAMethodStart'是調用者方法的調用者方法,並且沒有完全可靠的方法來獲取它。你可以做的最好的是['new Throwable().getStackTrace();'](https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#getStackTrace--) 。 – Boann
這不是'多重繼承'。這涉及擴展兩個類,Java不能這樣做。 –