我正在从导入的库扩展一个非常简单的 Java 接口。该接口非常简单,它声明的唯一方法是属性列表的 getter 和 setter。
我的应用程序是用 Groovy 编写的,因此我想使用 Groovy 类来实现这个 Java 接口。
我的印象是,Groovy 默认为其任何类的属性创建了 getter 和 setter - 我可以使用这些默认的 getter 和 setter 来满足 Java 接口的要求吗?
库的Java接口:
public interface Animal { // java interface
public String getName();
public void setName(String name);
public Integer getAge();
public void setAge(Integer age);
}
我希望能够用 Groovy 来实现它(但我的编译器抱怨缺少设置器):
public class Cat implements Animal { // Groovy class
public String name;
public Integer age;
}
你可以用 groovy 做到这一点特性,但要考虑到之间的差异字段和属性 http://www.groovy-lang.org/objectorientation.html#_fields_and_properties:
A field是一个类或特征的成员:
- 强制访问修饰符(公共、受保护或私有)
- 一个或多个可选修饰符(static、final、synchronized)
- 可选类型
- 强制性名称
[...]
A property是私有字段和 getter/setter 的组合。
您可以使用以下方式定义属性:
- an absent访问修饰符(非 public、protected 或 Final)
- 一个或多个可选修饰符(static、final、synchronized)
- 可选类型
- 强制性名称
然后 Groovy 将适当地生成 getter/setter。
当您放置显式访问修饰符时,您实际上正在使用一个字段,因此不会生成 getters/setters,这就是编译器抱怨的原因Can't have an abstract method in a non-abstract class
,因为 getter/setter 不存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)