で、Eclipseのでコンパイル:使用することはありませんjavacの次のコードは、Eclipseでコンパイル
@Retention(RetentionPolicy.CLASS)
@Target({ TYPE_USE })
public @interface Nullable {
// This is org.eclipse.jdt.annotation.Nullable
}
class SomeClass {
private final [email protected] Inner b;
}
が、それは、Oracleのjavacの(バージョン1.8としません。 0_141)、それは次のエラーを得られます。
SomeClass.java: error: annotation type not applicable to this kind of declaration
それはコンパイルする必要があります(私はjavacのとEclipseのコンパイラはTYPE_USEの取り扱いに異なっていることを賭けるが、私のコードに注釈を保つように、私は回避策を見つけることができませんでしたEclipse内およびjavacを使用して)。この問題に関する手がかりは?
'@Nullable SomeOtherClass.Inner b'は同じでコンパイルできませんか?これは私が見たことのない奇妙なコンストラクトです。 – Seelenvirtuose
'@Nullable SomeOtherClass.Inner b'は(Eclipse Lunaを使用して)コンパイルされません。「静的メンバーへのアクセスに使用される型名に型名は使用できません。私が正しく覚えていれば、それは過去のある時点でコンパイルするために使用されていました。私たちはEclipseを更新するときに(Eclipseプラグインを開発する)奇妙な構文に切り替える必要がありました。 –
あなたのコードは、import文や 'SomeOtherClass'の宣言などがないのでコンパイルされません。できればEclipseライブラリに依存せずにMWEを提供してください。欠落部分を追加するようにコードを拡張したとき、 'javac 1.8.0_131'でコンパイルされましたが、コードや環境に多少の違いがあります。 – mernst