当前位置:  开发笔记 > 编程语言 > 正文

为什么Java 7中没有本机属性?

如何解决《为什么Java7中没有本机属性?》经验,为你挑选了4个好方法。

有没有合理的理由,为什么原生属性不会成为Java 7的一部分?



1> Alex Miller..:

当然,有一些与时间表和资源相关的高级原因.属性的实现和理解与其他语言特性的所有分支和交叉是一项大型任务,类似于各种Java 5语言更改的大小.

但我认为Sun没有推出属性的真正原因与闭包相同:

1)对于实现应该是什么样的,没有达成共识.或者更确切地说,有许多相互竞争的选择,对财产充满热情的人不同意实施的关键部分.

2)或许更重要的是,对于该功能是否完全没有达成共识.虽然很多人都想要房产,但也有很多人不认为这是必要的或有用的(特别是,我认为服务员方面的人认为房产对他们的日常生活的重要性远远低于摇摆程序员).

这里的属性历史:

http://tech.puredanger.com/java7#property



2> erickson..:

在Java中"正确"执行属性并不容易.RémiForax的工作特别有助于弄清楚这可能是什么样子,并揭示了许多必须处理的"问题".

与此同时,Java 7已经花了太长时间.关闭辩论是一个巨大的,有争议的分心,浪费了很多心灵力量,可以用来开发广泛的支持共识的功能(如属性).最终,决定限制模块化的主要变化(Project Jigsaw).该语言仅考虑"小变化"(在项目硬币下).

JavaFX具有漂亮的属性支持,因此Sun清楚地了解属性的价值并知道如何实现它们.但是,受到JavaFX属性的破坏,开发人员不太可能满足于使用Java的半生不熟的实现.如果他们值得做,他们值得做对.


对于知识不足的人,您能否简要解释一下用Java正确实现属性的困难?

3> Neal Gafter..:

默认情况下,任何给定的东西都"未完成",因此没有特别的理由需要保留未完成的东西.相反,需要一些令人信服的理由将某些东西从"未完成"转移到"计划"或"完成".这种语言功能尚未出现足够令人信服的理由.



4> Lawrence Kes..:

避免使用任何语言的属性还有两个原因:

属性不是面向对象的.使它们易于编写可以鼓励对象只提供其内部状态并且调用者操纵它的模式.该对象应提供更高级别的方法并保持其内部私有.下次您繁琐地实现getter时,请考虑调用者将对数据执行的操作以及您是否可以直接提供该功能.

属性鼓励可变状态(通过setter),这使得程序不易并行化.随着核心数量的增加,我们都应该尝试使我们的对象不可变,以使并发推理更容易.下次您繁琐地实现setter时,请考虑将其删除并使对象不可变.


我对象_"属性不是非常面向对象"_.其他人也是如此:_"["对象",它们是包含数据的数据结构,以字段的形式,通常称为属性;以及代码,以过程的形式,通常称为方法.](http:/ /en.wikipedia.org/wiki/Object-oriented_programming)"._强迫(API/class /)对象的用户至少忽略其定义的一半是不方便的.它既不自然又膨胀代码:`person.name ="Nimoy";`vs`person.setName("Nimoy");`和`name = person.name;`vs`name = person.getName(); .`
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有