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

Java中缺少属性语法

如何解决《Java中缺少属性语法》经验,为你挑选了3个好方法。

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成为一个几乎任何程序员都能理解的通用语言.它还可以很容易地推断出任意孤立的代码片段正在做什么,并且能够提供更好的工具支持.缺点是它使语言更冗长,更不具有表现力.这不一定是设计语言的正确方法或错误方法,这只是一种权衡.



1> dsimcha..:

我认为这只是Java对事物的一般哲学.属性有点"神奇",Java的理念是尽可能简化核心语言,避免像瘟疫那样的魔法.这使Java成为一个几乎任何程序员都能理解的通用语言.它还可以很容易地推断出任意孤立的代码片段正在做什么,并且能够提供更好的工具支持.缺点是它使语言更冗长,更不具有表现力.这不一定是设计语言的正确方法或错误方法,这只是一种权衡.


如果Java编译器没有执行诸如更改字符串连接以使用StringBuilder类之类的内容,那么这将更加可信.从汇编语言/字节码的角度来看,编译语言在这个定义中完全是"神奇的".
我不认为这有资格作为魔法 - 至少,不比任何其他语法包含多个字节码指令.
是的,它确实.您正在使函数调用看起来像公共字段访问.不要误解我的意思,我认为属性很有意义,但是我再一次并不是真的反对魔法.我只是说他们不符合真正鄙视魔法的哲学.

2> krosenvold..:

在10年左右的时间里,sun尽可能地抵制语言的任何重大变化.在同一时期,C#已经通过一个引人注目的开发,在每个版本中添加了许多新的酷炫功能.

我认为很久以前火车离开了java中的属性,它们会很好,但是我们有java-bean规范.现在添加属性只会使语言更加混乱.虽然javabean规范IMO远没有那么好,但它必须要做.在宏伟的事物计划中,我认为物业并不是那么相关.java代码中的膨胀是由getter和setter之外的其他东西引起的.

还有更重要的事情要关注,例如获得一个体面的关闭标准.



3> Jim Puls..:

C#中的属性语法只不过是语法糖.你不需要它,它只是为了方便.Java人不喜欢语法糖.这似乎足以让它缺席.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有