假设你有一个超级班。在该超类中,您希望将自身 ( this
) 的运行时对象作为参数传递给重载方法。诀窍是,这个重载的方法被子类类型重载。当你尝试这样做时,你会得到一个
方法...不适用(实际参数...无法通过方法调用转换转换为...)
相反,您需要在每个子类型中分别实现该方法(只是为了获得正确的运行时类),当方法的内容相同时,这是很多重复的工作。
例如:
public class InferTypeTest {
public static void main(String[] args) {
SubClass1 s1 = new SubClass1();
s1.sayHi();
}
public static void sayHi(SubClass1 clz) {
System.out.println("clz 1");
}
private abstract static class SuperClass{
public void sayHi() {
InferTypeTest.sayHi(this);
}
}
private static class SubClass1 extends SuperClass{
}
}