【问题标题】:Type safety using IntDef使用 IntDef 进行类型安全
【发布时间】:2017-11-03 12:52:14
【问题描述】:

我正在尝试用 IntDef 注释替换源代码中的一些枚举。我一直在关注this 文档。

我有一个变量用于保存以前是枚举的 ViewMode。现在我已将其更改为如下所示。

@Retention(RetentionPolicy.SOURCE)
@IntDef({ViewMode.VIEW_MODE_LIST_VIEW, ViewMode.VIEW_MODE_CARD_VIEW})
public @interface ViewMode {
    int VIEW_MODE_LIST_VIEW = 0;
    int VIEW_MODE_CARD_VIEW = 1;
}

@ViewMode
public int currentViewMode = ViewMode.VIEW_MODE_LIST_VIEW;

现在要测试这是否安全,我在方法中做了以下操作

this.currentViewMode = 987; //currentViewMode should be 0 or 1. Nothing else.

但这现在没有给我编译错误。我在这里遗漏了什么吗?

【问题讨论】:

  • 你的意思是“现在给我一个编译错误”(这是你写的),还是“没有给我一个编译错误”?
  • @mernst 感谢您指出。那是一个错误。更正了

标签: java android annotations


【解决方案1】:

您不会收到编译错误,因为枚举的注释只是 lint 检查:请参阅Improve Your Code with Lint

您应该可以直接在 Android Studio 中看到错误标记,或者在从命令行运行 android lint 检查时看到:请参阅 Improve Your Code with Lint

注意:您还可以将构建配置为自动运行 lint 检查:
SO: Run lint when building android studio projects
但是运行 linter 需要一些时间,因此您可以选择仅在发布版本或 CI 服务器上运行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2011-10-01
    • 2021-06-30
    相关资源
    最近更新 更多