2017-03-03 6 views
2

私はOracleのJDK 1.8との単純なコードにコンパイルします:実行idea作品、 内側しかし、もしそのコンパイル後JavaのNotNullはどこですか?

import com.sun.istack.internal.NotNull; 

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

しかし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 

は私がNotNull1.8に追加されたことを考えた:私はエラーを得ましたか? はどうすればideagradleNotNullの利用可能にすることができますか?

+0

http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-useを確認してください。私はそれが@NonNullだと思う。 – SachinSarawgi

+0

'javax.annotation.Nonnull'を意味しますか? – QBrute

+0

オプションを試してください。 – MicD

答えて

3

一般的な使用のための標準JDKの@NotNullアノテーションはありません(com.sun.internal.istack.NotNullは内部クラスであるため、間違いなく使用しています)。

Java Bean検証フレームワーク(JSR-303)は、javax.validation.constraints.NotNullを持ちます。これは、例えばHibernateバリデーターによって実装されています。それは、おそらくあなたが探しているものです。

2

私は、これは静的解析のためのIntelliJ IDEA IDEで使用されるようおorg.jetbrains.annotations.NotNullを追加するべきだと思います。参照してください :
IntelliJ Documentation
This SO Question

関連する問題