Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java7中没有本机属性?_Java_Properties_Java 7 - Fatal编程技术网

为什么Java7中没有本机属性?

为什么Java7中没有本机属性?,java,properties,java-7,Java,Properties,Java 7,有没有合理的理由,为什么不成为Java 7的一部分? 时间不够 还没有正确的规格 由于java的实现,很难添加到java 认为不够重要(其他事情被优先考虑) 在Java中实现属性“正确”并不容易。雷米·福拉克斯的工作尤其有助于弄清楚这可能是什么样子,并揭示许多必须解决的“问题” 与此同时,Java7已经花了太长时间。闭包之争是一个巨大的、有争议的干扰,浪费了很多本来可以用来开发具有广泛支持共识的功能(如属性)的脑力。最终,决定将主要变更限制在模块化(项目拼图)。该语言只考虑“小变化”(在Coin

有没有合理的理由,为什么不成为Java 7的一部分?

  • 时间不够
  • 还没有正确的规格
  • 由于java的实现,很难添加到java
  • 认为不够重要(其他事情被优先考虑)
在Java中实现属性“正确”并不容易。雷米·福拉克斯的工作尤其有助于弄清楚这可能是什么样子,并揭示许多必须解决的“问题”

与此同时,Java7已经花了太长时间。闭包之争是一个巨大的、有争议的干扰,浪费了很多本来可以用来开发具有广泛支持共识的功能(如属性)的脑力。最终,决定将主要变更限制在模块化(项目拼图)。该语言只考虑“小变化”(在Coin项目下)


JavaFX具有漂亮的属性支持,因此Sun清楚地了解属性的价值,并知道如何实现它们。但是由于JavaFX属性的破坏,开发人员不太可能满足于用Java实现一个半生不熟的实现。如果它们值得去做,那么它们就值得去做正确的事情。

当然有一些与日程安排和资源相关的高层原因。实现属性并理解与其他语言特性的所有分支和交叉点是一项艰巨的任务,类似于各种Java5语言更改的规模

但我认为Sun不推出属性的真正原因与闭包是一样的:

1) 关于实施应该是什么样子,没有达成共识。或者更确切地说,存在许多相互竞争的替代方案,对属性充满热情的人对实现的关键部分意见不一

2) 也许更重要的是,对于是否需要该功能,人们缺乏共识。虽然很多人想要属性,但也有很多人认为它不是必需的或有用的(特别是,我认为服务器端的人认为属性对他们的日常生活的重要性远远低于swing程序员)

物业历史记录在此:


    • 默认情况下,任何给定的事情都是“未完成”的,因此不需要特别的理由使某些事情保持未完成状态。相反,需要一些令人信服的理由将某些事情从“未完成”转移到“已计划”或“已完成”。此语言功能尚未出现足够令人信服的理由。

      还有两个理由可以避免使用任何语言的属性:

      • 属性不是非常面向对象的。使它们易于编写会鼓励这样一种模式,即对象只提供其内部状态,而调用方对其进行操作。对象应该提供更高级的方法,并保持其内部私有。下一次当你无聊地实现一个吸气剂时,考虑调用方对数据的处理,以及你是否可以直接提供这些功能。

      • 属性鼓励可变状态(通过setter),这会降低程序的并行性。随着内核数量的增加,我们都应该努力使我们的对象不可变,以使并发推理更容易。下一次当你无聊地执行一个设置程序时,考虑删除它并使对象不可变。


      很有趣。我不知道关于属性的争议,至少不知道引起了什么样的仇恨关闭。你能提供任何链接来填写背景的利弊吗?我同意属性在服务器端不那么重要,JavaFX解决了客户端的需求。作为服务器端人员,属性是我的全部。添加了有关旧属性讨论的链接。就我个人而言,我非常矛盾。我发现大多数提案都没有让我太兴奋。我不确定Java是否能在这一领域真正满足Groovy或Scala这样的要求。不要用语言的特性来衡量语言的能力。想想这个平台,这个生态系统,……伊万的评论真是太棒了。我正在学习C#,而我遇到的Java所缺乏的许多特性并没有像解决更具挑战性的问题那样让人尖叫。另外,有些代码看起来可能会产生更复杂的代码,比如从一个方法返回多个东西。或者臭名昭著的goto语句。对于不太了解情况的人,您能简要解释一下在Java中正确实现属性的困难吗?I对象“属性不是非常面向对象”。其他人也是如此。至少,强迫(API/class/)对象的用户忽略其定义所拥有的内容的一半是不可信的。它既不自然又臃肿的代码:
      person.name=“Nimoy”vs.person.setName(“Nimoy”)
      name=person.name
      vs.
      name=person.getName()我建议避免使用“不太面向对象”这一短语(在这一点上几乎毫无意义),但保留这两个要点(关于良好的设计,简单明了)。否则,读者会专注于自己对OOP的个人定义,而忽略这里真正要说的内容。