问题
I think this is not possible, but maybe I'm wrong. So I ask you, if it is possible. ;-)
If I define a annotation that accept only class references which extends some interface or class that is possible:
Class<? extends ServiceProviderIF> serviceIFProvider();
At this annotation I only can add some class which extends ServiceProviderIF. My question: is such a definition also possible for another annotation? That means with pseudocode something like this
Class<? contains AnnotationXYZ> classReferences();
AnnotationXYZ is another annotation definition. And the class which should be added is only accepted by containing this Annotation.
TIA and best regards, Oli
回答1:
It's impossible. Annotation can be set on any type (class, interface), but Java method can't return a multi-type containing types from different hierarchies. In other words, you should place all your classes that have annotation AnnotationXYZ
in the same hierarchy under some interface or class Blabla
, then use type <? extends Blabla>
wildcard.
回答2:
No, it's not possible. Only types are accepted in generic types. And annotations don't define types.
来源:https://stackoverflow.com/questions/11011783/annotations-restrict-reference-to-classes-with-a-annotation