为什么Java没有像C#这样的自动属性?[已关闭]

C# 具有自动属性,可大大简化代码:

public string Name { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }

而Java让你写了这么多代码:

private String name;
private String middleName;
private String LastName;

public String Name(){
   return this.name;
}

etc..

Java没有实现这样的东西有什么特别的原因吗?


答案 1

是的,因为它没有它。俗话说,所有功能开始时都未实现。


答案 2

向现有编程语言添加新功能并不容易,特别是如果您关心向后兼容性。Sun在向Java添加新功能时一直非常谨慎,因为他们希望绝对确定任何新的语言功能都不会破坏多年来编写的数百万个Java程序。

因此,这不仅仅是将其添加到语言中的问题;你必须非常仔细地思考,并尝试一下,以发现你想要添加的任何新功能是否没有任何微妙的向后兼容性问题。

有人提议在Java中以一种或另一种形式添加对属性的支持,但是对于Java 7(即将推出的下一个版本)来说,这似乎不是正在考虑的功能。

你可能想看看Project Lombok,它是Java的一种扩展,使用注释,以便编写更简洁的代码(例如,它可以自动为字段生成getter和setter)。


推荐