2017-12-20 11 views
-1

を望んでいない。これは私のエラーメッセージです:<identifier>期待されるが、私は使用識別子

Set.java:12: error: <identifier> expected 
     data = (T[]) new Object[10]; 
      ^
1 error 

これはSet.javaの私のコードです。

public class Set<T>{ 

      private T[] data; 
      private int used; 
      private int capacity; 

      public Set(){ 

       used = 0; 
       capacity = 1024; 
       @SuppressWarnings("unchecked") 
       data = (T[]) new Object[10]; 
      } 

      public int empty(){ 

       if(used == 0){ 
        return 1; 
       } 
       else{ 
        return 0; 
       } 

      } 

もし私がT[ ] data = (T[]) new Object[10];を行った場合、エラーはなくなります。しかし、私は​​を使用したくありません。私はすでにprivate T[] data;のデータフィールドにこれを行っています。data = (T[]) new Object[10];でデータフィールドを使用したいのですが、新しいT[ ] dataではなく、このエラーメッセージが表示されます。私に何ができる?

答えて

0

あなたcannot use annotations within a method body。警告を無視する場合は、メソッド宣言の前にアノテーションを移動します。

@SuppressWarnings("unchecked") 
public Set() 
{ 
    used = 0; 
    capacity = 1024; 
    data = (T[]) new Object[10]; 
} 
1

注釈と初期化を宣言に移動するだけです。それはコンストラクタ内の何にも依存しません。実際には他の2つの変数も同じです。その後、コンストラクタを削除することができます。あなたが書く必要のないコードを書かないでください。

public class Set<T> { 
    @SuppressWarnings("unchecked") 
    private T[] data = (T[]) new Object[10]; 
    private int used = 0; 
    private int capacity = 1024; 

    //constructor removed 

    public int empty(){ 
     //... 
+0

あなたは特別なコードを書くことができますか?私はいくつかのコードを使用せずに理解できません。 – invalidargument

+0

@マイケル私はそれを公正な問題と考えています。彼の理解度を正確に把握することなく、私はどのようにして正しく答えることができますか? – EJP

関連する問題