Java方法signatur忽略不等的类返回

Flo*_*uck -1 java extends types return function

好我尝试执行此操作:

public class A
{
}
public class B extends A
{
}
public class UseAandB {
  public static B from() {return new B();}
  public static A from() {return new A();}
}
Run Code Online (Sandbox Code Playgroud)

但我无法执行此操作,因为B扩展了A.为什么这不起作用?我该如何解决这个问题?

编辑:我的第一个猜测似乎是错误的方法的返回签名不是官方方法签名的一部分,再次java失败的每个逻辑级别.感谢Andy Turner

And*_*ner 5

但我无法执行此操作,因为B扩展了A.

不,你不能编译它,因为你在同一个类中两个覆盖等效方法.如果您改变其中一个方法返回,那么它将无法工作String.

返回类型不是Java中方法签名的一部分,因此您不能定义两个仅在返回类型上不同的方法.

最简单的解决方法是重命名至少一种方法,例如fromBfromA.或者,将方法放在单独的类中.

(还有其他方法可以让它进行编译,但这些方法基本上包括在方法签名中添加不必要的附加内容,比如额外的未使用参数.重命名方法是最干净的方法.)