我很难理解如何从其实际实现类中获取对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/