考虑以下代码:为什么不允许接口作为注释成员?
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Bar {
Foo foo() default FooImpl.FooConstant;
}
编译器错误:
annotation value not of an allowable type
如果我用FooImpl
替换Foo
,则接受代码。
这种行为的原因是什么?
我完成了第一句话,第二个似乎是问题。我想知道为什么这是不允许的注释... – soc
@soc *我履行了第一句话*不,你没有。 '类<?扩展Foo> fooType()'是有效的,'Foo foo()'不是。 –
认为Foo Foo()是一种方法(只是为了简单起见)......我们能否提到接口作为方法的返回类型? :) – Nik