Java void方法隐式返回此


20

关于SO的setter方法返回“ this”类型有一些讨论。而且看起来像Java 7的提议void方法返回此。但是该建议无法使其适用于Java 7功能。我找不到此建议是否移至Java 8或更高版本,或者已被完全丢弃。是吗?

参考链接-https: //stackoverflow.com/questions/31584/design-java-and-returning-self-reference-in-setter-methods


3
非常高兴能与您在问题中提到的讨论建立一些链接,以便对他人有用,并帮助他们更多地了解问题。
2011年

编辑了我的问题
塔伦(Tarun)

Answers:


11

我似乎找不到任何来源,但我相信此功能已被完全删除。我能想到的原因有很多:

  • 性能 -每个void方法现在都有一个额外的返回操作码,pop除非实际使用方法链接,否则每个隐式调用该方法的位置都需要隐式

  • 向后兼容性 -对此功能进行编译会突然使代码向后不兼容,因为每种void方法的协定都已更改

当然,这也可以由编译器来实现(void?上调用方法?您可能是this想让我隐式添加),而不知道这种方法的缺点是什么。


1
编译器必须支持此功能(以便调用代码进行编译),并且它可以保存被调用的对象并在不更改调用方法的情况下再次使用它。
彼得·劳瑞

这种性质的OpenJDK的功能现在作为JDK增强建议(JEP)处理,并且确实不再列出(而且我已经有一段时间没有看到过讨论了)。

3

我不认为这是针对2009年Project COIN的正式提议。 该页面旨在列出所有建议,但我看不到相应的建议。

如果没有提出,就不会考虑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.