2

if pos2[targetPos3] does not point to a hashset (is not a hashset) という if ステートメントをどのように記述しますか? 私はそれを試しましたが、それでもヌルポイント例外が発生します。

Object[] pos2;
int targetPos3;
targetPos3 = word.charAt(2) - 'a';

if(pos2[targetPos3] != (HashSet<String>) pos2[targetPos3]){
   System.out.println("Sorry");
 }
4

6 に答える 6

4

これを試して:

if(!(pos2[targetPos3] instanceof HashSet)){
    System.out.println("Sorry");
}

タイプ eraseHashSetが原因で、それがof String(またはその他のタイプ) であるかどうかを確認する方法はありません。

于 2013-04-15T16:39:56.733 に答える
1

ここinstanceofでオペレーターがお手伝いします。オブジェクトが であるかどうかはわかりますが、タイプ eraserHashSetのため、ここでは実行時に、それが であるかどうかを判断することはできません。HashSet<String>HashSet

if (!(pos2[targetPos3] instanceof HashSet)) {
于 2013-04-15T16:40:03.177 に答える
0

Java でinstanceof 演算子を使用します。

if (!(pos2[targetPos3] instanceof HashSet)) {
   // ...
}
于 2013-04-15T16:40:06.263 に答える
0

instanceofあなたが探している演算子です:

if(! pos2[targetPos3] instanceof HashSet){
    System.out.println("Sorry");
}
于 2013-04-15T16:40:44.890 に答える
0

を使用しますinstanceof。例えば:

if(pos2[targetPos3] instanceof HashSet) {
    ...
}

ただし、配列をインスタンス化し、境界チェックを行う必要もあります。そう:

pos2 = new Object[desiredLength];

if((targetPos3 < pos2.length) && (pos2[targetPos3] instanceof HashSet)) {
    ...
}
于 2013-04-15T16:41:01.007 に答える
0

エラーチェックは行いません。

if(targetPos3 < pos2.length){   
   if(!(pos2[targetPos3] instanceof HashSet)){
      System.out.println("Sorry");
   }
}

も確認してくださいword != null
必要なのは、instanceofオペレーターが実際に持っていることを確認することですHashSet

于 2013-04-15T16:41:34.043 に答える