我想这样做并没有什么特别的原因——我只是想知道这是否可能。如果有帮助的话,这是一个可以使用它的虚构情况:
想象一种类型Enum用作只读数据源,这样每个值都Enum包含不同的内容。器物。Enum_ Readable现在,假设我们需要一个将 的所有值读取Enum到单个缓冲区中的方法。这可以作为辅助类中的静态实用方法来实现(见下文)。
public class ReadableEnumUtils {
/** reads data from all enum values into the charbuffer */
public static <T extends Enum<T> & Readable> int readAll(Class<T> clazz, CharBuffer cb) throws IOException {
int total = 0;
for (T e : clazz.getEnumConstants()) {
int intermediate = e.read(cb);
if (intermediate < 0) {
throw new IllegalArgumentException("The enum value \'" + e.name() + "\' had no data to read.");
}
total += intermediate;
}
return total;
}
}
最好在接口中声明该方法,但这可能会造成混淆,因为非 Enum 类不应实现此类方法并不是立即显而易见的。理想情况下,接口的定义方式可以使编译器确保它仅由 的子类实现Enum。以下是该界面的示例:
interface ReadableEnum extends Readable {
int read(CharBuffer cb) throws IOException;
int readAll(CharBuffer cb) throws IOException;
}
我认为不可能让编译器确保ReadableEnum仅由子类实现Enum- 这是正确的吗?
慕森卡
胡子哥哥
相关分类