C#具有声明和使用属性的语法.例如,可以声明一个简单的属性,如下所示:
public int Size { get; set; }
还可以在属性中添加一些逻辑,如下所示:
public string SizeHex { get { return String.Format("{0:X}", Size); } set { Size = int.Parse(value, NumberStyles.HexNumber); } }
无论是否具有逻辑,属性的使用方式与字段相同:
int fileSize = myFile.Size;
我对Java或C#并不陌生 - 我已经使用了很多,而且我总是错过了Java中的属性语法.我已经在这个问题中读到"在Java 7中或者可能永远不会添加属性支持",但坦率地说,我发现在讨论,论坛,博客,评论和JSR中挖掘它们需要做太多工作才能找到答案.为什么.
所以我的问题是:任何人都可以总结为什么Java不太可能获得属性语法?
是因为与其他可能的改进相比,它被认为不够重要吗?
是否存在技术(例如与JVM相关)的限制?
这是政治问题吗?(例如"我已经用Java编写了50年的代码,我说我们不需要steenkin'属性!")
是自行车的情况吗?
dsimcha.. 13
我认为这只是Java对事物的一般哲学.属性有点"神奇",Java的理念是尽可能简化核心语言,避免像瘟疫那样的魔法.这使Java成为一个几乎任何程序员都能理解的通用语言.它还可以很容易地推断出任意孤立的代码片段正在做什么,并且能够提供更好的工具支持.缺点是它使语言更冗长,更不具有表现力.这不一定是设计语言的正确方法或错误方法,这只是一种权衡.
我认为这只是Java对事物的一般哲学.属性有点"神奇",Java的理念是尽可能简化核心语言,避免像瘟疫那样的魔法.这使Java成为一个几乎任何程序员都能理解的通用语言.它还可以很容易地推断出任意孤立的代码片段正在做什么,并且能够提供更好的工具支持.缺点是它使语言更冗长,更不具有表现力.这不一定是设计语言的正确方法或错误方法,这只是一种权衡.
在10年左右的时间里,sun尽可能地抵制语言的任何重大变化.在同一时期,C#已经通过一个引人注目的开发,在每个版本中添加了许多新的酷炫功能.
我认为很久以前火车离开了java中的属性,它们会很好,但是我们有java-bean规范.现在添加属性只会使语言更加混乱.虽然javabean规范IMO远没有那么好,但它必须要做.在宏伟的事物计划中,我认为物业并不是那么相关.java代码中的膨胀是由getter和setter之外的其他东西引起的.
还有更重要的事情要关注,例如获得一个体面的关闭标准.
C#中的属性语法只不过是语法糖.你不需要它,它只是为了方便.Java人不喜欢语法糖.这似乎足以让它缺席.