设计通用接口(interface)时可以在枚举上使用标记注释吗?
或者,是否可以在编译时键入检查注释引用?
我正在开发一组处理消息的接口(interface),每个消息将由消息类型和消息内容组成。 我想将消息类型编码为枚举,然后基于此定义其他接口(interface)。像这样的事情,
public interface MessageHandler<E extends Enum<E>> {
boolean handles( E messageType );
}
我不想在这里使用任何枚举,我可以像这样添加一个标记接口(interface)MessageType
,
public interface MessageHandler<E extends Enum<E> & MessageType> {
boolean handles( E messageType );
}
我知道现在标记注释比标记接口(interface)更可取,但我认为这里没有办法使用它们。有可能吗,还是我只能坚持使用界面?
最佳答案
注释像 XML 一样被滥用。如果接口(interface)完美地表达了类型,为什么要使用“标记注释”?
在您的情况下,处理程序不需要枚举类型。它为什么关心?您确实可能将所有消息类型都作为枚举,但这与 super 处理程序接口(interface)无关。每个子处理程序都对其所处理的类型有深入的了解,它可以处理枚举等。
enum TypeX implements MessageType
{
X1,
X2
}
class HandlerX extends Handler<TypeX>
handle(TypeX type)
if(type==X1)
...
----
class TypeY implements MessageType
{
int x;
}
class HandlerY extends Handler<TypeY>
handle(TypeY type)
if(type.x==0)
...
关于java - 在枚举上使用标记注释的通用界面设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4957752/