【问题标题】:Is there a NonNullByDefault annotation for Android StudioAndroid Studio 是否有 NonNullByDefault 注释
【发布时间】:2016-04-18 10:12:39
【问题描述】:

我真的很想念 Android Studio 中 eclipse 中的 @NonNullByDefault。有没有办法得到这个或类似的东西?我只看到一个使用javax的@TypeQualifierDefault,但是在android项目中似乎没有。

【问题讨论】:

    标签: java android android-studio intellij-idea annotations


    【解决方案1】:

    我还没有找到@NonNullByDefault 功能。但是您至少可以让检查员处理所有未注释的成员和参数,就好像它们被注释为@Nullable一样。这至少有助于获得 100% 的空值分析覆盖率。基本上是一个@NullByDefault。

    【讨论】:

      【解决方案2】:

      我编写了一个 gradle 脚本来处理 Android Studio 的 project-wide @NonNullByDefault 注解。

      遍历所有子包,检查每个子包中是否生成package-info.java文件。

      脚本在每个 assembleDebug 任务之前运行,以便您可以在项目中的所有 java 类上强制使用 @ParametersAreNonnullByDefault 注解。

      NonNullByDefault for all java classes inside a project

      【讨论】:

        【解决方案3】:

        其实你可以直接将eclipse注解包添加到你的项目中并使用它。

        简单添加

        dependencies {
            implementation group: 'org.eclipse.jdt', name: 'org.eclipse.jdt.annotation', version: '2.2.600'
        }
        

        到你的 gradle,你可以使用它提供的 @NonNullByDefault 注解。

        像往常一样,您可以为每个班级设置它

        @NonNullByDefault
        public class MyClass {
            String test = "This is a non null string"
            @Nullable test2 = "This is a nullable string"
        
            public MyClass(String nonNullParam, @Nullable String nullableParam) {
                Object nonNullVar = nonNullParam;
                @Nullable Object nullableVar = nullableParam;
            }
        }
        

        或者您可以通过创建一个 package-info.java 文件并在其中为整个包设置它

        @NonNullByDefault   
        package my.package;
        
        import org.eclipse.jdt.annotation.NonNullByDefault;
        

        您仍然需要激活https://stackoverflow.com/a/35942944/2075537 中的设置才能完全覆盖,以防您在包裹上忘记它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-18
          • 2021-09-11
          • 2018-10-04
          • 2016-07-14
          • 1970-01-01
          • 2019-02-09
          相关资源
          最近更新 更多