我很难理解如何从其实际实现类中获取对java.lang.annotation.Annotation的引用。

注释本身看起来像这样(从框架):

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresPermissions {
    ...snip...
}


在我的使用代码中,我想做这样的事情:

Annotation requiresPermissionAnnotation = RequiresPermissions.class;


对于我的一生,我无法弄清楚该如何或如何强制转换,或者我可以采用哪种类型来获取它。

作为一种变通方法,我可以有一个简单的类,该类具有带有此批注(和其他批注)的方法,并在Class上使用反射方法来获取java.lang.annotation.Annotation,但这似乎很奇怪。

谢谢!

最佳答案

注释的实例仅针对带注释的类型/方法存在。这是你可以得到的

Annotation requiresPermissionAnnotation = SomeAnnotatedClass.class.getAnnotation(RequiresPermissions.class);


您可以强制转换为RequiresPermissions以访问任何属性。

RequiresPermissions requiresPermissions = (RequiresPermissions) requiresPermissionAnnotation;


或直接获得

RequiresPermissions requiresPermissions = SomeAnnotatedClass.class.getAnnotation(RequiresPermissions.class);


对于方法

Annotation requiresPermissionAnnotation = someMethodInstance.getAnnotation(RequiresPermissions.class);

关于java - 从类对java.lang.annotation.Annotation的引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23344165/

10-11 17:40