1

我有一个关于接口、注释和“继承”的 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吗?如果是,我如何访问注释值?

4

1 回答 1

0

导入 java.lang.annotation.Retention;导入 java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)

公共@interface SomeKindOfAnnotation{

public String typeOfSecurityNeeded();

}


公共接口 A {

@SomeKindOfAnnotation(typeOfSecurityNeeded = "low")
public void f3() ;

}

公共类 B 实现 A {

@Override
public void f3() {
    // TODO Auto-generated method stub
}

}

导入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

}

}


输出 ---->>>>

安全级别低

于 2013-08-28T10:31:39.643 回答