2011-10-26 83 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 
    } 
} 

錯誤:無法找到符號方法Add(java.lang.Integer中)Java的鑄造通用

我想問一下如何轉換整數類型(T VAL)..好像我需要做的事情,我很困惑。

如果我錯了,請糾正我的理解。

謝謝

+7

您沒有向我們展示您的位圖聲明。 –

+2

我發現有趣的是,你已經聲明'add(T val)'方法參數是通用的,但是你始終將這些值視爲整數,也在註釋中!爲什麼不把它變成一個'add(int val)'方法? – BalusC

+1

你可以添加缺少的代碼?給定位圖對象,BitMapSet似乎是某種東西的構造函數,但不是Set的一個子類或Set的一個實現。但什麼是位圖對象?您說它是第二個代碼段中的數組,但在第一個代碼段中,您使用contains()方法,該方法位於實現Collection接口的類上。 –

回答

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 
    } 
}