在调试 java 代码时,在堆栈跟踪中,我注意到以下内容
ToyotaCar(AbstractCar).handle()
行数:40
看起来大括号中的类是基类。eclipse总是会显示基类吗?
在调试 java 代码时,在堆栈跟踪中,我注意到以下内容
ToyotaCar(AbstractCar).handle()
行数:40
看起来大括号中的类是基类。eclipse总是会显示基类吗?
如果调用基类的方法,堆栈行将显示基类(定义方法的位置)和调用此类方法的对象的类。
我在这里假设你做了类似的事情
ToyotaCar car = new ToyotaCar();
car.handle();
whereToyotaCar
不会覆盖该handle()
方法。堆栈跟踪通知您,您的调用handle()
不是由实际的ToyotaCar
,而是由AbstractCar
. 然而,你在一个ToyotaCar
对象上调用了它。
就其本身而言,如果您不覆盖基类方法,则堆栈行的这种表示法可能看起来有些过分。但是,考虑一下您想要覆盖该handle()
方法但仍需要调用handle()
on 的情况AbstractCar
。您将需要发出一个
super.handle();
里面ToyotaCar.handle()
。在对象上调用handle()
方法时ToyotaCar
,首先将其调用为 a ToyotaCar
,然后调用为AbstractCar
. 两条堆栈线将明确地允许您区分一个调用和另一个调用。