gpt4 book ai didi

android - 传递给具有 IntRange 和 NonNull 的方法的无效值不会中止发布构建

转载 作者:行者123 更新时间:2023-11-30 00:55:01 24 4
gpt4 key购买 nike

我正在阅读 https://developer.android.com/studio/write/annotations.html

在我的示例中,我使用了注释@NonNull、@IntegerRes 和@IntRange。这是我的代码:

package com.example.maksim.myapplication;

import android.os.Bundle;
import android.support.annotation.IntRange;
import android.support.annotation.IntegerRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("MyAnnotation", "" + getStr(null));
setAlpha(12000);
Log.d("MyAnnotation", "" + getRes(12));
}

public static boolean getStr(@NonNull String s) {
return s.contains("a");
}

public static int getRes(@IntegerRes int s) {
return s;
}

public void setAlpha(@IntRange(from=0,to=255) int alpha) {
alpha *= 2;
Log.d("MyAnnotation", "setAlpha=" + alpha);
}
}

这是我模块的 build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"

defaultConfig {
applicationId "com.example.maksim.myapplication"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.0.0'
testCompile 'junit:junit:4.12'
}

当我将 null 传递给 getStr 或将 [0, 255] 中的整数传递给 setAlpha 并运行 ./gradlew app:assembleRelease , 建好了。但是,当我使用不是整数资源 ID 的整数调用 getRes() 时,构建失败。

那么为什么它不中止我对@NonNull 和@IntegerRes 的构建?

最佳答案

来自Documentation

例如,如果将包含 null 值的局部变量作为参数传递给方法,并将 @NonNull 注释附加到该参数,构建代码会生成警告 表示非空冲突。另一方面,如果不先检查结果是否为 null 就尝试引用由 @Nullable 标记的方法的结果,会生成 nullness 警告。如果方法的每次使用都应该明确地进行 null 检查,那么您应该只在方法的返回值上使用 @Nullable。

应该是

generate a warning

关于android - 传递给具有 IntRange 和 NonNull 的方法的无效值不会中止发布构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com