【问题标题】:@inherited also make @Overrided methods values inherited the annotation?@inherited 还让@Overrided 方法的值继承了注解?
【发布时间】:2017-06-04 01:47:05
【问题描述】:

我最近正在处理很多继承的接口和注释,我对@Inherited 注释有疑问。我知道默认情况下,子类和方法不会继承 java 注释。使用@Inherited注解我们可以使注解被子类继承。

但它也适用于方法构造函数中的注释值?

例如:

@Inherited
@StringDef({ID_REAR, ID_FRONT})
@Retention(RetentionPolicy.SOURCE)
public @interface CustomId {
}

public interface Setting {
   void update(@CustomId String myCustomId);
}   

public class CustomSetting implements Setting{

   @Override public void update(String myCustomId) {

   }
}

在这种情况下,CustomSetting 中的方法update 会为其构造函数(String myCustomId) 实现注解@CustomId 吗?

【问题讨论】:

  • 没有。阅读@Inherited 注释的API docs,其中说:“请注意,如果注释类型用于注释类以外的任何内容,则此元注释类型无效。”
  • 明白,那么方法值就没有办法继承了?

标签: java android inheritance interface annotations


【解决方案1】:

正如上面 Jesper 的回答,API docs 对此非常清楚:@Inherit 注释不适用于类以外的任何东西:

请注意,如果注释类型用于注释类以外的任何内容,则此元注释类型无效。另请注意,此元注释仅导致注释从超类继承;已实现接口上的注释无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-04
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2015-08-06
    相关资源
    最近更新 更多