java - 使用派生参数重载派生类中的 final方法

标签 java

我遇到了这篇文章(答案之一)中完美描述的情况:is it possible to overload a final method

我的问题是是否有一种方法可以执行派生类方法,或者其他方法...这对我的项目有很大帮助,避免重复代码仅用于强制转换并在方法内执行相同的操作(这些操作是许多)。

我关心的只是将代码保留在一个位置以便维护和调试,我自己找不到办法。 提前致谢。

class Base {
  public final doSomething(Object o) {
    System.out.println("Object");
  }
}

class Derived extends Base {
  public doSomething(Integer i) {
    System.out.println("Int");
  }
}

public static void main(String[] args) {
  Base b = new Base();
  Base d = new Derived();
  b.doSomething(new Integer(0));
  d.doSomething(new Integer(0));
}

最佳答案

调用子类中重载的方法的唯一方法是在子类类型的引用上调用它。你需要一个 Actor 阵容

((Derived) d).doSomething(new Integer(0));

这可能会导致 ClassCastException 或在适当类型的变量上调用它

Derived d = new Derived();
d.doSomething(new Integer(0));

关于java - 使用派生参数重载派生类中的 final方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537762/

相关文章:

java - MyBatis - 在 foreach 中绑定(bind)参数

java - 混淆java线程变量可见性

java - 在构造函数中抛出异常(java)

java - 在 spring boot 中通过动态键读取属性

java - 向服务器发送 POST 请求

java - onConfigurationChanged 不适用于 API17

java - 如何限制 SAX 解析器处理程序类中调用 'startElement()' 的次数?

java - 复合 PK 字段的分离标准?

java.util.logging.logger 通过在日志文件名后添加数字来创建多个日志文件

java - 安卓 |充气按钮不起作用