5

StoredCredential のインスタンスが null かどうかを確認すると

if(storedCredential != null){
  //do something
}

Netbeans 7.1 では、次の警告が表示されます。

bad operand types for binary operator '=='
  first type:  com.blah.dbcore.mypublic.beans.StoredCredential
  second type: <nulltype>

正しくコンパイルされ、RuntimeExceptions はスローされませんが、Netbeans は依然として警告を表示します。'!=' を使用してインスタンスが null でないかどうかを確認すると、同じエラーが発生します。

次のコードは同じことを行いますが、あまり明確ではありません。

if (!(storedCredential instanceof StoredCredential)) {
  //do something
}

Netbeans では、この式に問題はありません。

コンパイルに問題がないので、クラスを含む .jar をライブラリに追加した方法に問題があると思います。これは私がこのjarで抱えている唯一の問題ですが、この.jarの他のクラスではこの問題は発生しません。

4

2 に答える 2

1

私もこの問題を抱えていました。また、問題のクラスのインスタンスを、オブジェクトをパラメーターとして受け入れるメソッドに渡そうとしたところ、次のエラーが発生しました。

required: String,Object
found: String,SomeClass
reason: actual argument SomeClass cannot be converted to Object by method invocation conversion

コンパイラがクラスの正しい型を判断できなかったことが判明しました。

私のクラス (com.blah.lib.SomeClass と呼びましょう) は 1 つの NB プロジェクト (プロジェクト 1 と呼びましょう) にあり、プロジェクト 1 のライブラリであるサードパーティの jar でクラスを拡張しました。

別の NB プロジェクト (プロジェクト 2 と呼びましょう) はプロジェクト 1 に依存しており、com.blah.lib.SomeClass を使用していましたが、ライブラリにサードパーティの jar が含まれていなかったため、プロジェクト 2 をコンパイルすると、コンパイラは完全なファイルを特定できませんでした。 com.blah.lib.SomeClass の継承。

したがって、解決策は、サードパーティの jar を Project 2 のライブラリにも追加することでした。

これは何年も前のものであることは知っていますが、将来問題をグーグルで検索するのに役立つ場合に備えて、この回答を投稿すると思いました。

于 2014-05-30T14:58:25.983 に答える
0

Netbeans は、プログラムのその時点で、storedCredentialnull になる可能性はないと言っています。これはおそらく、既にメソッドを呼び出しているかstoredCredential、そのメソッドの早い段階でデータ メンバーにアクセスしたことを意味します。

于 2012-05-14T21:57:31.723 に答える