我正在使用 Java 不可变库http://immutables.github.io/ 我有 3 个不可变类,所以基本上是 3 个带有一堆参数的类。对于这些类中的每一个,我们都有一个唯一的键。
所以,我决定定义一个这样的接口:
public interface DataKey<T> {
public T getKey();
}
现在,我希望每个 Immutable 类都实现这个接口,这里是一个例子
@Value.Immutable
public abstract class CurrencyDemo implements DataKey<String> {
public abstract String getCode();
@Value.Derived
public String getKey() {
return getCode();
}
}
这一切正常。我之所以能够做到这一点,是因为我知道我应该为 getKey 提供一个实现,否则在构建 Immutable java 对象时我会得到一个异常。
有没有办法强制用户在定义实现 DataKey 接口的不可变类时强制开发人员提供 getKey() 的实现?
目的; 我可以在这些不可变类上编写通用代码,并保证它们都有一个名为 getKey() 的方法