2011-10-26 9 views
-1
public BitMapSet(int[] init){ 
    for(int n: init) { 
     Integer i = new Integer(n); 
     if(bitmap.contains(i)){ 
      System.out.println("There is duplicated value"); 
     }else{ 
      bitmap.add(i); //Add individual value into array 
     } 
    } 
} 

public void add(T val){ 
    if(cast(val) < 0 || cast(val) >99){ //range of integers between 0 – 99 
     throw new IndexOutOfBoundsException("Please enter value between 0 to 99"); 
    }else{ 
     if(bitmap[cast(val)]!=1){ //Check for array position exist value 
     bitmap[cast(val)]=1; // there is no existing value, change value = 1; 
     size++; //increase size 
    } 
} 

エラーにキャストするJava:シンボル法は(java.lang.Integerの)を追加見つけることができませんジェネリック

私は(T val)での整数型に変換しますどのようにお願いしたいとしますが..私のように見えました私は非常に混乱しているキャストを行う必要があります。

私が間違っている場合、親切に私の理解を修正してください。

ありがとうございます

+7

「ビットマップ」の宣言は表示されていません。 –

+2

'add(T val)'メソッドの引数をジェネリックであると宣言したのは興味深いことですが、コメントでも値を常に整数として扱っています!単に 'add(int val)'メソッドにするのはなぜですか? – BalusC

+1

不足しているコードを追加できますか? BitMapSetは、何かのコンストラクタであるようですが、ビットマップオブジェクトが与えられた場合、SetのサブクラスやSetの実装ではありません。しかし、ビットマップオブジェクトは何ですか? 2番目のコードセグメントの配列ですが、最初のコードセグメントでは、Collectionインターフェイスを実装するクラスにあるcontains()メソッドを使用します。 –

答えて

0

私はコメントに同意します、なぜそれを一般的にしていますか?あなたがジェネリックを使用したい場合は、限り、あなたはされたオブジェクトが的に比較することができるタイプのものであろうことを知っているようにキャストする必要はまだありませんそれ以外の場合は...

public void add(int val){ 
    if(val < 0 || val >99){ //range of integers between 0 – 99 
     throw new IndexOutOfBoundsException("Please enter value between 0 to 99"); 
    }else{ 
    if(bitmap[val]!=1){ //Check for array position exist value 
     bitmap[val]=1; // there is no existing value, change value = 1; 
     size++; //increase size 
    } 
} 

これを試してみましたあなたは提示しました。

public <T> void add(T val){ 
    if(val < 0 || val >99){ //range of integers between 0 – 99 
     throw new IndexOutOfBoundsException("Please enter value between 0 to 99"); 
    }else{ 
    if(bitmap[val]!=1){ //Check for array position exist value 
     bitmap[val]=1; // there is no existing value, change value = 1; 
     size++; //increase size 
    } 
}