Array Queue-使用-xlint重新编译:unchecked / unsafe操作

时间:2013-09-24 02:47:27

标签: java queue unchecked

可能有很多错误,对不起。我是java的新手,我在使用所有语法和诸如此类的东西时遇到了相当困难。我无法通过这个错误,但我没有看到它的位置。我甚至无法编译,因为我收到消息:“...使用未经检查或不安全的操作。注意:使用-Xlint重新编译:未选中以获取详细信息” 求助。

这应该实现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;
    }
}

2 个答案:

答案 0 :(得分:0)

关于“未经检查或不安全的操作”的警告不应该阻止编译代码。你必须修复其他错误。请注意,如果不获取此类警告(或禁止它们),则无法实现基于阵列的通用集合。这就是为什么最好使用现有的JFC Collection实现,因为您可以期望他们的开发人员要小心并且经验足以区分不可避免的警告和实际问题。

答案 1 :(得分:0)

这不是错误,因为其中一个投射只是一个警告。您可以使用以下选项之一: 1- Add Item [] ts =(Item [])(new Object [CAPACITY]);         q = ts; 或

2-在类的开头添加@SuppressWarnings(“unchecked”)以忽略所有警告并查看错误的位置。