java中的NotNull在哪里?

时间:2017-03-03 10:43:49

标签: java

我想用oracle jdk 1.8编译简单代码:

class Foo {
   public static void test(@NotNull String a) {}
}

idea不理解此类代码,并建议添加:

import com.sun.istack.internal.NotNull;

idea内的编译后,

但是如果gradle使用build.gradle运行构建:

version '1.0-snaphshot_03.03.2017'

apply plugin: 'java'

targetCompatibility = '1.8'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

artifacts {
    archives sourcesJar
}

我收到了错误:

error: package com.sun.istack.internal does not exist
import com.sun.istack.internal.NotNull;

 error: cannot find symbol
    public static void test(@NotNull String a) {
                                  ^
  symbol:   class NotNull
  location: class Foo

我认为NotNull中添加了1.8? 如何才能在NotNullidea中使用gradle

2 个答案:

答案 0 :(得分:5)

标准JDK中没有@NotNull注释用于一般用途(com.sun.internal.istack.NotNull绝对不适合您的使用,因为它是内部类。)

Java Bean验证框架(JSR-303)具有javax.validation.constraints.NotNull,它由(例如)Hibernate验证器实现。那可能 你想要的东西。

答案 1 :(得分:2)

我认为您应该添加org.jetbrains.annotations.NotNull,因为IntelliJ IDEA IDE会将其用于静态分析。 参见:
IntelliJ Documentation
This SO Question