java - Java方法签名忽略不等类返回
问题描述
好的,我尝试执行此操作:
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。为什么这不起作用?我该如何解决这个问题?
编辑:我的第一个猜测似乎是错误的方法的返回签名不是官方方法签名的一部分,java 在每个逻辑级别上再次失败。感谢安迪·特纳
解决方案
但我无法执行此操作,因为 B 扩展了 A
不,您无法编译它,因为您在同一类中有两个等效的替代方法。如果您将其中一种方法更改为返回,例如,它也行不通String
。
返回类型不是 Java 中方法签名的一部分,因此您不能定义两个仅在返回类型上有所不同的方法。
最简单的解决方法是重命名至少一种方法,例如fromB
和fromA
。或者,将方法放在单独的类中。
(还有其他方法可以编译它,但这些基本上涉及向方法签名添加不必要的额外内容,例如额外未使用的参数。重命名方法是最干净的方法。)
推荐阅读
- keyword - 在 gensim + 关键字提取中使用 pos_tagger 选项的正确方法
- r - 在 R markdown 中使用 unicode
- html - 使用 Bootstrap 是否意味着混合内容和布局?
- javascript - 当一些卡片有图像而一些卡片没有图像时,从 AJAX 调用生成 HTML(引导卡片)到 JSON 文件
- c# - C# MS Access INNER 加入语法错误
- html - 为图像加载 CSHTML 附加字符串
- wordpress - wordpress 多站点索引徽标图像 url 重定向
- php - 你知道为什么自动完成搜索不能正常工作吗?
- python - Pool / starmap的Python多处理行为
- android - 在android中将颜色而不是图像设置为imageview