是否给Java本地方法提供相同的名称?

时间:2018-09-10 14:05:52

标签: java

MyClassBuilder myClassBuilder = myClassBuilder()

一种用于返回生成器的工厂方法,该方法分配给与该方法同名的本地方法。

今天以前我从未见过。它有意义还是应该避免?不可能在Python或C ++中有意义地执行此操作,因此当我刚接触Java时,就感觉不对。 IntelliJ并没有给出警告,而是导致一些(对我而言)令人困惑的代码。

简单地说:这被认为是惯用的Java吗?

编辑:我不认为这纯粹是基于观点。 Java社区的主要参与者(甚至可能是语言创建者本人)可能会也可能不会使用这种语言的“功能”。如果他们这样做,则表明它是惯用的。理想情况下,答案会引用它的使用位置或所解决的特定问题。我认为这不是一个很好的语言功能,我从未使用过它,但我胸襟开阔,并准备接受其他建议。

2 个答案:

答案 0 :(得分:1)

在Java 方法 field 中,名称具有自己的名称空间,因此可以给它们指定相同的名称。

有些代码样式可能会使用它:

public class Human {
    private String opinion;

    public Human opinion(String opinion) {
        this.opinion = opinion;
        return this;
    }

    public String opinion() {
        return opinion;
    }

由于字段/方法,字段/参数和方法重载导致的重复。

偶尔会看到流利的API,Builder模式,以及讨厌的人。

从上面可以看到,它也是重复的。方法名称的语言短语似乎更好(除了我们有size()之类的东西。)

答案 1 :(得分:0)

可能,但是...

这是可能的,并且会进行编译,但这确实令人困惑。我认为最好避免为您的同事和/或未来的自己起这样的名字。

您可以看到this website的良好做法,而且我认为您甚至可以找到更好的官方资源。