首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(否) Java中的属性?

(否) Java中的属性?
EN

Stack Overflow用户
提问于 2008-09-16 08:52:01
回答 13查看 53.7K关注 0票数 56

所以,直到最近,我一直故意让自己成为一个Java,而我的第一次真实曝光带来了一个小小的震撼: Java没有C#风格的属性!

好吧,我可以接受。然而,我也可以发誓,我在一个代码库中见过Java中的属性getter/setter代码,但我记不清在哪里了。这是如何实现的?有没有相应的语言扩展?这跟NetBeans有什么关系吗?

EN

回答 13

Stack Overflow用户

发布于 2013-08-29 03:47:01

我很惊讶竟然没有人提到project lombok

是,目前java中没有属性。还有其他一些缺失的功能。

但幸运的是,我们有project lombok正在努力改善这种情况。它也变得越来越受欢迎。

因此,如果您使用的是lombok:

代码语言:javascript
运行
复制
@Getter @Setter int awesomeInteger = 5;

这段代码还将生成getAwesomeIntegersetAwesomeInteger。所以它非常类似于C# auto-implemented properties

你可以获得更多关于lombok getters和setters here的信息。

你一定也应该看看other features。我最喜欢的是:

  • val
  • NoArgsConstructor, RequiredArgsConstructor, AllArgsConstructor
  • Logs!

Lombok与IDE集成得很好,所以它将显示生成的方法,比如它们是否存在(建议、类内容、转到声明和重构)。

lombok的唯一问题是其他程序员可能不知道它。您可以随时delombok代码,但这与其说是一种解决方案,不如说是一种变通方法。

票数 34
EN

Stack Overflow用户

发布于 2008-09-16 10:20:41

"Java属性支持“是为Java7提出的,但并没有进入语言中。

如果有兴趣,请访问http://tech.puredanger.com/java7#property获取更多链接和信息。

票数 11
EN

Stack Overflow用户

发布于 2008-09-16 08:59:58

bean约定是这样编写代码的:

代码语言:javascript
运行
复制
private int foo;
public int getFoo() {
    return foo;
}
public void setFoo(int newFoo) {
    foo = newFoo;
}

在JVM虚拟机上的一些其他语言中,例如Groovy,您可以获得类似于C#的可重写属性,例如,

代码语言:javascript
运行
复制
int foo

它可以通过一个简单的.foo访问,并利用默认的getFoosetFoo实现,您可以根据需要覆盖这些实现。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70471

复制
相关文章

相似问题

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