Sno*_*ugg 3 java getter setter groovy getter-setter
我正在从导入的库中扩展一个非常简单的Java接口.界面非常简单,它声明的唯一方法是属性列表的getter和setter.
我的应用程序是用Groovy编写的,所以我想用Groovy类实现这个Java接口.
我的印象是Groovy默认为其任何类的属性创建了getter和setter - 我可以使用这些默认的getter和setter来满足Java接口的要求吗?
Library的Java接口:
public interface Animal { // java interface
public String getName();
public void setName(String name);
public Integer getAge();
public void setAge(Integer age);
}
Run Code Online (Sandbox Code Playgroud)
我希望我能用Groovy这样实现它(但我的编译器抱怨缺少setter):
public class Cat implements Animal { // Groovy class
public String name;
public Integer age;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用groovy 属性执行此操作,但请考虑字段和属性之间的差异:
甲字段是一个类或一个性状,其中的成员:
- 强制访问修饰符(公共,受保护或私有)
- 一个或多个可选修饰符(静态,最终,同步)
- 可选类型
- 强制名称
[...]
一个属性是一个私有字段和getter/setter方法的组合.您可以使用以下内容定义属性:
- 一个没有访问修饰符(没有公开,保护或最终)
- 一个或多个可选修饰符(静态,最终,同步)
- 可选类型
- 强制名称
然后Groovy将适当地生成getter/setter.
当你放置一个显式访问修饰符时,你实际上是在使用一个字段,因此不会生成getter/setter,这就是编译器抱怨的原因Can't have an abstract method in a non-abstract class,因为getter/setter不存在.
| 归档时间: |
|
| 查看次数: |
2803 次 |
| 最近记录: |