首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java有没有类似于C#属性的东西?

java有没有类似于C#属性的东西?
EN

Stack Overflow用户
提问于 2010-06-03 11:59:53
回答 4查看 69.8K关注 0票数 91

C#属性(我指的是get和set方法)是一个非常有用的特性。java也有类似于C#的属性吗?我的意思是,我们如何在java中实现类似下面这样的C#代码:

代码语言:javascript
复制
public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-03 12:01:57

不,Java没有等价物。它只有accessor和mutator方法,getter和setter方法的别致名称。例如:

代码语言:javascript
复制
public class User {
    private String name;

    public String getName() { return this.name; }
    public void setName(String name) { this.name = name; }
}
票数 102
EN

Stack Overflow用户

发布于 2010-06-03 12:43:43

您可以看看Project Lombok,因为它试图消除编写样板Java代码的痛苦。它允许您使用@Getter@Setter注释,这些注释将提供getBlah()setBlah()方法:

代码语言:javascript
复制
public class GetterSetterExample {
  @Getter @Setter private int age = 10;
}

或者你可以只使用@Data,它会自动实现你的hashCode()equals()toString()和getter方法,以及非最终字段上的setter方法:

代码语言:javascript
复制
@Data public class DataExample {
  private String name;
}

然而,我发现这个项目的问题是,它有点像巫毒,可能会让人讨厌,而且你必须安装一个Eclipse (或其他什么)插件才能让自动编译工作。

票数 29
EN

Stack Overflow用户

发布于 2012-11-20 14:39:50

属性不仅在编写封装在单元中的getterssetters方面很方便,而且它们还在调用点提供了良好的语法。

代码语言:javascript
复制
Window.Title =  "New"; //which looks natural

而对于getterssetters,通常是

代码语言:javascript
复制
Window.setTitle("New");
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2963243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档