Java方法签名忽略不等classreturn
Java method signatur ignore unequal class return
好的,我试着执行这个:
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();}
}
但我无法执行此操作,因为 B 扩展了 A。为什么这不起作用?我该如何解决这个问题?
编辑: 我的第一个猜测似乎是错误的 return 方法的签名不是官方方法签名的一部分,再次 java在每一层逻辑上都失败了。感谢 Andy Turner
But I can not execute this because B extends A
不,你不能编译因为你有two override-equivalent methods in the same class。如果您将其中一种方法更改为 return,例如 String
,则它不会起作用。
Return 类型不是 Java 中方法签名的一部分,因此您不能定义两个仅在 return 类型上不同的方法。
最简单的解决方法是至少重命名其中一种方法,例如fromB
和 fromA
。或者,将方法放在单独的 类.
中
(还有其他方法可以使其编译,但这些基本上涉及向方法签名添加不必要的额外内容,例如额外未使用的参数。重命名方法是最干净的方法。)
好的,我试着执行这个:
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();}
}
但我无法执行此操作,因为 B 扩展了 A。为什么这不起作用?我该如何解决这个问题?
编辑: 我的第一个猜测似乎是错误的 return 方法的签名不是官方方法签名的一部分,再次 java在每一层逻辑上都失败了。感谢 Andy Turner
But I can not execute this because B extends A
不,你不能编译因为你有two override-equivalent methods in the same class。如果您将其中一种方法更改为 return,例如 String
,则它不会起作用。
Return 类型不是 Java 中方法签名的一部分,因此您不能定义两个仅在 return 类型上不同的方法。
最简单的解决方法是至少重命名其中一种方法,例如fromB
和 fromA
。或者,将方法放在单独的 类.
(还有其他方法可以使其编译,但这些基本上涉及向方法签名添加不必要的额外内容,例如额外未使用的参数。重命名方法是最干净的方法。)