我有一个关于接口,注释和'继承'的Java问题(让我使用它 即使我们谈论接口,也要说出来。
这是一个例子,然后是我的问题:
public interface A {
@SomeKindOfAnnotation(..)
boolean modifyElement(String id)
}
public class B implements A{
@Override
public boolean modifyElement(String id){
//Implementation
}
}
方法modifyElement(String id)
(在B类中)是否可以继承注释@SomeKindOfAnnotation
?如果是,我如何访问注释值?
答案 0 :(得分:0)
import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeKindOfAnnotation {
public String typeOfSecurityNeeded();
}
公共接口A {
@SomeKindOfAnnotation(typeOfSecurityNeeded = "low")
public void f3() ;
公共类B实现A {
@Override
public void f3() {
// TODO Auto-generated method stub
}
import java.lang.reflect.Method;
公共类TestProgram {
public static void main(String[] args) {
try {
A obj = new B();
Class c = obj.getClass();
Method m = c.getMethod("f3");
if(m.isAnnotationPresent(SomeKindOfAnnotation.class))
{
SomeKindOfAnnotation x = m.getAnnotation(SomeKindOfAnnotation.class);
System.out.println("level of security is " +x.typeOfSecurityNeeded() );
}
else
{
System.out.println("no security ");
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
O / P -------->>>>>>>>>>
没有安全保障
现在在B类中添加注释
公共类B实现A {
@Override
@SomeKindOfAnnotation(typeOfSecurityNeeded = "low")
public void f3() {
// TODO Auto-generated method stub
}
}
O / P ---->>>>>
安全级别低