【发布时间】:2022-01-18 07:39:45
【问题描述】:
首先,我知道官方对这个问题的回答是,它根本无法在原生 Java 环境中完成。所以我不是在问这是否是 Java 本身可以做的事情。我只是想问是否可以在 Java 中完成 - 也许通过我不知道的其他方式。
我一直在尝试使用我想要的库,开发人员可以在其中与对象交互,通过不引用它可以识别该对象,然后我只需在库中通过默认名称,或者,开发人员可以为对象分配名称,在这种情况下,每个给定的新名称都会在库中创建一个新的对象实例。
但是在提供与库的功能相关的公共方法方面,我不得不为每种方法创建两个,这显着增加了库的大小,其中很多都必须复制因为 Java 进行方法重载的方式。是的,我确实在所有可能的地方合并重复代码,但这并没有改变我必须为每个提供的函数创建两个方法的事实。
理想情况下,这个
public static void getThis(float value, String objectName) {
//related code for objectName
}
public static void getThis(float value) {
//related code for the defaultObjectName
}
如果我可以为 objectName 分配一个默认值,就会变成这个
public static void getThis(float value, String objectName = defaultObjectName) {
//related code handles objectName
}
所以我的问题是,这可以通过任何方式来完成吗?也许是第三方选项?
另外,有谁知道为什么 Java 不提供这种能力?
编辑:阅读第一条评论后,我删除了最后一个问题的一部分。
【问题讨论】:
-
请阅读stackoverflow.com/help/dont-ask。这个问题要么是询问第三方工具,要么是抱怨为什么该语言不能按照你想要的方式工作——不管怎样,这对 Stack Overflow 来说都是无关紧要的。诸如“是否违反某种法律”之类的短语也无助于善意问题。
-
也就是说:按照最典型的标准,Java 是“面向对象”语言的特别差示例。最值得注意的是,Java 中的许多东西不是对象,而其他语言(例如 Python)中的东西。而且,OOP 与问题无关;没有理由阻止没有“对象”概念的语言具有“默认参数”的概念,也没有理由“面向对象”应该要求函数或方法的默认参数。
-
@KarlKnechtel 我当然不是在咆哮,也不是在抱怨……这绝不是我问题的意图。我认为 Java 没有提供这种能力是有充分理由的,尽管我不知道那是什么......我的意思是这篇文章没有任何不和谐。
标签: java overloading