接口,注释继承

时间:2013-08-28 09:26:47

标签: java inheritance annotations override

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

1 个答案:

答案 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 ---->>>>>

安全级别低

相关问题