Java有自动属性吗?

lom*_*axx 19 java language-features

在c#中,您可以设置如下属性:

public int CustomerId {get;set;}
Run Code Online (Sandbox Code Playgroud)

这设置了一个名为CustomerId的自动属性,但我想知道Java中是否有类似内容?

Jon*_*eet 26

不,Java目前没有类似的东西.哎呀,Java中的属性大多只是get/set方法的约定,而不是编译器真正理解它们在C#中.工具和库识别get/set模式,但语言不知道它们.(在未来的Java版本中,可能会有更多"正式"支持.)

但是,某些类似Java的语言(如Groovy)会自动生成属性.

  • @Tom:是的,在某些方面.我不确定这是否相关......它肯定不会使我写的内容无效. (10认同)
  • @Carlos:它仍然是与元数据(有或没有字段)绑定在一起的几个方法。但重点是 C# 编译器了解属性 - 它们是语言的一部分。在 Java 中,它们只是一种约定 - 编译器不会关心你是否将它们称为“getFoo”和“setFoo”或“fetchFoo”和“putFoo”。其他库(例如支持 JavaBeans 的库)可能会,但那是另一回事。 (2认同)

Joe*_*oey 12

不,Java中没有这样的东西.

但是,在Eclipse中,您可以使用Source> Generate Getters/Setters为字段自动实现getter/setter方法.


小智 6

不是Java语言本身.但是,至少有一个库可以提供.请参阅:http://projectlombok.org/(或更具体:http://projectlombok.org/features/GetterSetter.html)