【IT168 资讯】Yegor Bugayenko称,他偶然受到了Brian Goetz关于Java中数据类提议的启发,立即意识到自己也有一些关于如何使Java成为更好语言的想法。其中,以下这五个最重要的。
全局变量
Java中有单例,这大家都知道。如果能在Java中启用全局变量并摆脱单例对象,这不是很好么。PHP,JavaScript,Ruby和许多其他语言都有,为什么Java没有?看看这个代码:
然后,要访问它,必须使用:
这是一个单例,但是它很冗长。可以简单地用一个全局变量替换它:
然后
编写更少的代码,阅读起来更容易!
全局函数和命名空间
为了将静态方法组在一起,我们创建了工具类,必须定义私有构造函数来防止它们实例化。另外,还必须记住静态方法所在的特定工具类中,这样的方法一点都不高效。Yegor Bugayenko建议我们将全局函数添加到Java和可选的“名称空间”来对它们进行分组。 看看这个工具类:
来看这个带命名空间的全局函数:
Yegor Bugayenko的观点是,既然已经在使用类作为函数的集合了,那么就让它更方便一些。在一些应用程序中,我们甚至不需要命名空间,只需要全局函数,例如C或者C ++。
完全访问私有属性和方法
为了从外部访问私有属性或对象的方法,我们必须使用Reflection API。这并不是特别困难,但它需要的这些代码却不容易阅读和理解:
Yegor Bugayenko建议,允许任何对象访问另一个对象的任何属性和方法:
当然,如果它们是私有的,编译器会发出警告。在编译时,您只需忽略警告并继续工作。
默认为NULL
可以用不完整的参数来调用构造函数和方法。默认情况下,我们不提供的参数将默认被设置为null。另外,当一个方法必须有返回值时,但是没有返回语句时,Java应该返回null。这几乎就是它在PHP,Ruby和许多其他语言中的工作原理。
当一些参数是可选的时,我们不需要定义这么多的方法。方法重载非常冗长,而且难以理解。相反,应该有一个具有参数列表的方法。其中一些将由调用者提供,另一些将被设置为空。该方法将决定要做什么,例如:
然后调用save(f)或save(f,“UTF-16”)。 该方法将更方便,就像在Ruby中一样,通过名称提供方法参数:
另外,当没有返回值时,该方法必须默认返回null。写入返回null是浪费时间的,这并不能真正提高可读性:
从这段代码中可以明显看出,如果文件存在,该方法将加载并返回其内容。如果不是,则返回null,这对于调用者来说是一个很好的指示器。
getter和setter
显而易见,我们需要这个特性:每个私有属性都必须自动拥有setter和getter。不需要去创建,就像Kotlin和Ruby一样,Java应该提供。如果没有getter和setter来读取并修改,那么又有什么意义呢?
有了这个新功能,就不再需要Lombok或IntelliJ IDEA的辅助。