Java:有没有这样做的快捷方式(简单的访问者/ getter的东西)

时间:2011-12-11 03:18:47

标签: java

假设我有一个名为Person的类:

public class Person 
{
    private String name, ID, location;
}

不是为姓名,ID和位置编写单独的访问者,而是要做这样的事情:

public String get%s 
{
    return this.%s
}

其中“%s”作为字符串名称的一种占位符,我想“获取”。这样,为了方便和高效,我将能够编写一种方法来访问所有三个字符串。感谢。

4 个答案:

答案 0 :(得分:4)

Java没有此功能,但如果您使用Eclipse,则可以自动为类成员生成setter和getter。

答案 1 :(得分:3)

我在Java中并不知道类似的东西,但Groovy几乎就是这样,将JavaBean get / sets暴露为公开的。

class Person {
    private String name
    private String location
    private String id

    String toString() {
        "Person( name: $name, location: $location, id: $id )"
    }
}

def bob = new Person()
bob.name = "bob";
bob.location = "seattle"

def robert = new Person( name: "robert", location: "seattle" )

println "bob is $bob, robert is $robert"

它也适用于您的旧学校JavaBeans。尝试一下groovy,它有Java本来应该拥有的东西,它与Java互操作,没有阻抗不匹配(一个int和int,一个BigDecimal是一个BigDecimal,我可以得到所有我的所有Jars,列表继续)。

一般来说,JavaBean get和set方法的生成已经成为IDE的功能。在Eclipse中,您设置成员变量,然后选择" Source,Generate Getters and Setters ..."并选择要公开方式的字段。

答案 2 :(得分:2)

查看Project Lombok,它在编译时生成getter和setter。

来自feature overview

的引言
  

@Getter / @Setter:   永远不要再次写入public int getFoo(){return foo;}。

     

@ToString:   无需启动调试器来查看您的字段:只需让lombok为您生成一个toString!

     

@Data:   现在一起:@ToString,@ EqualsAndHashCode,@ Getter在所有字段上的快捷方式,@ Setter在所有非最终字段上的快捷方式,以及@RequiredArgsConstructor!

您的Person类似乎是@Data注释的完美目标。

我在NetBeans中使用Lombok和JSF以及Hibernate,它就像一个魅力。

答案 3 :(得分:0)

你不能用Java做这件事。

您可以使用Groovy(在与Java类混合的Java项目中运行良好),您不必担心再次声明getter和setter。