我需要確保我的應用程序具有嚮應用程序擴展的超類引入新掛鉤方法的依賴項的向前兼容性。當我開始定義返回類型是已聲明的子類型時,直接引入新添加的方法(被我新構建的舊版本所忽略的方法)停止工作。覆蓋的Java方法即使存在,也不會調用
當我直接調用我的覆蓋方法爲foo.bar("")
超類方法被調用。但是,當我通過從調試器foo.getClass().getMethod("bar", String.class).invoke(foo, "")
反射調用它時,它會按預期調用重寫的方法。當它的返回類型被縮小到相同類型的重寫方法返回時,該方法被正確調用,它是之前的一個子類型。