【问题标题】:Interfaces, annotations inheritance [duplicate]接口,注释继承[重复]
【发布时间】:2013-08-31 07:14:01
【问题描述】:

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

【问题讨论】:

标签: java inheritance annotations overriding


【解决方案1】:

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

}

}


O/P ---->>>>>

安全级别低

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2010-10-21
    • 2011-04-15
    • 2014-12-31
    • 2019-05-08
    • 2010-09-27
    • 2011-09-05
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多