对于每个变量都要显式定义getter和setter非常冗长。 是否有更好的标准注释方法?
Spring有类似的功能吗?
甚至C#也有属性。
我不确定您是否认为它是“标准”的,但是Project Lombok解决了这个问题。他们使用注解来替换Java的大部分冗长。
有些人正在寻找替代Java兄弟语言,如Groovy或Scala。恐怕需要花费一些时间 - 如果有可能的话- 才能让JSR找到一种“标准化”的方式来在Java中适当地“修复”这个问题。
Eclipse有一个上下文菜单选项,可以为您自动生成这些内容,我相信许多其他IDE也有类似的功能。
我创建了一些不仅限于eclipse的注解。
请参见http://code.google.com/p/javadude/wiki/Annotations
例如:
package sample;
import com.javadude.annotation.Bean;
import com.javadude.annotation.Property;
import com.javadude.annotation.PropertyKind;
@Bean(properties={
@Property(name="name"),
@Property(name="phone", bound=true),
@Property(name="friend", type=Person.class, kind=PropertyKind.LIST)
})
public class Person extends PersonGen {
}
我的注释生成了一个超类;我认为Lombok修改了正在编译的实际类(这在Sun官方不受支持,可能会出问题 - 我可能对其工作方式有所误解,但根据我看到的情况,他们必须这样做)
祝愉快! -- Scott
尝试像这样的代码:
@Getter @Setter private int age = 10;
更多信息请参见下面链接:
case class Person(var name:String,
var age:Int);
val p = Person("John", 4)
p.name
p.name = "Charlie"
p.name
并且输出:
defined class Person
p: Person = Person(John,4)
res7: String = John
res8: String = Charlie
还有Spring Roo项目,它带有@RooJavaBean注释。它还有类似@RooToString和@RooHashCodeEquals的内容。它会在后台生成一个带有适当方法的AspectJ文件。
使用Netbeans,只需在需要替换getter/setter的位置开始输入get或set,并调用自动完成(Ctrl+Space),它会为您提供生成getter或setter的选项。 它还将为您提供生成构造函数的选项。