2012-04-12 5 views
0

実際にはArrayListが実際のデータを保持していますが、何らかのデータを特定の順序で保持していない、非常に単純なクラスSackを書きました。私はクラスとそのメソッドを実装し、すべてがうまく見えましたが、私はテストクラスでコンパイル時エラーを受け取ります。Generic ArrayListに裏付けられたJava汎用クラス

袋クラス:

public class Sack<E> 
{ 
    //I suspect this might be the culprit, not sure if I can do this 
    //but it compiles fine, should this maybe be of type Object? 
    ArrayList<E> contents = new ArrayList<E>(); 

    public void add(E item) 
    { 
    contents.add(item); 
    } 

    public boolean contains(E item) 
    { 
    return contents.contains(item);    
    } 

    public boolean remove(E item) 
    { 
    return contents.remove(item); 
    } 

    public Object removeRandom() 
    { 
    if(isEmpty()) 
    { 
     return null; 
    } 
    else 
    { 
     int index = (int)(Math.random() * size()); 
     return contents.remove(index); 
    } 
    } 

    public int size() 
    { 
    return contents.size(); 
    } 

    public boolean isEmpty() 
    { 
    return contents.isEmpty(); 
    } 

}

メインクラス:

public class SackDriver 
{ 
    Sack<Integer> s = new Sack<Integer>(); 
    Integer i  = new Integer(2); 

    s.add(new Integer(1)); //<- Error 
    s.add(i);    //<- Error 
    s.add(3);    //<- Error 
    s.add(4);    //<- Error 
    s.add(5);    //<- Error 
    s.add(6);    //<- Error 

    System.out.println("Size: " + s.size() + " Contains: " + s.contains(5));  
} 

これは私が()を追加するために呼び出しごとに受信エラーです:

SackDriver.java:11: error: <identifier> expected 
        s.add(x); 

私がここで間違っていることを確信していない、どんな助けもありがとう。

答えて

4
Sack<Integer> s = new Sack<Integer>(); 
Integer i  = new Integer(2); 

s.add(new Integer(1)); //<- Error 
s.add(i);    //<- Error 
s.add(3);    //<- Error 
s.add(4);    //<- Error 
s.add(5);    //<- Error 
s.add(6);    //<- Error 

System.out.println("Size: " + s.size() + " Contains: " + s.contains(5)); 

これは、クラスにハングアウトするだけでなく、メソッド、コンストラクタ、または静的ブロック内にある必要があります。ジェネリックスとは何の関係もありません。

+0

を使用:「パブリック静的な無効メイン(文字列[] args)は」 – Luciano

+0

はありがとう..私はそれを見落としかわかりません。 –

0

このコードをメソッドまたはブロックで使用する必要があります。このコードは、ここではマニュプレートできません。すなわち

void test(){ 
s.add(new Integer(1)); //<- Error  s.add(i);    //<- Error  s.add(3);    //<- Error  s.add(4);    //<- Error  s.add(5);    //<- Error  s.add(6);    //<- Error  System.out.println("Size: " + s.size() + " Contains: " + s.contains(5)); 

} 

またはメインという静的メソッドでは

class SackDriver {  



     Sack<Integer> s = new Sack<Integer>();  
     Integer i  = new Integer(2);  
     { 
     s.add(new Integer(1)); 
     //<- Error  
     s.add(i);    
     //<- Error  
     s.add(3);    
     //<- Error  
     s.add(4);    
     //<- Error  
     s.add(5);    
     //<- Error  
     s.add(6);    
     //<- Error  
     System.out.println("Size: " + s.size() + " Contains: " + s.contains(5)); 
     } 


} 
関連する問題