1

間違いが多いかもしれません、すいません。私はJavaが初めてで、すべての構文などでかなり苦労しています。このエラーを回避できませんが、どこにあるのかわかりません。次のメッセージが表示されるため、コンパイルすることさえできません。

これは、ほとんどただの Queue インターフェースを実装することになっています

public boolean enqueue(Item item);
public Item dequeue();
public int size;
public boolean isEmpty();
public boolean isFull();

円形にしようとしましたが、成功したかどうかはわかりません。問題を引き起こすのはジェネリックだと思いますが、わかりません。

    public class ArrayQueue<Item> implements Queue<Item> {
    private Item[] q;
    public int N = 0;
    private int tail = 0;
    private int head = 0;

    public ArrayQueue(int capacity) {
    q = (Item[]) new Object [capacity];
    }

    public boolean enqueue(Item item) {
        if (isFull())
            return false;
        q[tail++] = item;

        if(tail == q.length )
            tail = 0;
        N++;
        return true;
    }

    public Item dequeue( ) {
        if (isEmpty( ) )
            return null;
        N--;
        Item headItem = q[head];
        q[head++] = null;
        if(head == q.length )
            head = 0;

        return headItem;
    }



    public int size( ) {
        return N;
    }

    public boolean isFull() {
        return N == q.length;
    }


    public boolean isEmpty() {
        return N == 0;
    }
}
4

2 に答える 2

0

これはエラーではなく、キャストの 1 つによる単なる警告です。次のいずれかのオプションを使用できます。 1- Add Item[] ts = (Item[])(new Object[CAPACITY]); q = ts; また

2- クラスの先頭に @SuppressWarnings("unchecked") を追加して、すべての警告を無視し、エラーの場所を確認します。

于 2013-11-08T05:23:49.343 に答える