在调试Java代码时,在堆栈跟踪中,我注意到以下内容ToyotaCar(AbstractCar).handle()
行:40
看起来括号中的类是基类。蚀会始终显示基类吗?
最佳答案
如果调用基类的方法,则堆栈行将同时显示基类(定义方法的位置)和调用该方法的对象的类。
我在这里假设你做了类似的事情
ToyotaCar car = new ToyotaCar();
car.handle();
其中
ToyotaCar
不会覆盖handle()
方法。堆栈跟踪通知您,对handle()
的调用不是由实际的ToyotaCar
服务,而是由AbstractCar
服务。但是,您是在ToyotaCar
对象上调用它的。就其本身而言,如果您不重写基类方法,则用于堆栈行的此符号可能看起来过多。但是,请考虑要覆盖
handle()
方法但仍需要在handle()
上调用AbstractCar
的情况。您将需要发出一个super.handle();
在
ToyotaCar.handle()
中。在handle()
对象上调用ToyotaCar
方法时,首先将其称为ToyotaCar
,然后称为AbstractCar
。两条堆栈线将明确允许您告诉另一个呼叫。关于java - 堆栈跟踪行中引用的基类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11063658/