预期<identifier>但我不想使用标识符

时间:2017-12-20 11:33:44

标签: java generics

这是我的错误消息:

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];错误消失了。但我不想使用T[ ],因为我已经在private T[] data;的数据字段完成了这项工作所以我想使用data = (T[]) new Object[10];的数据字段而不是新的{{1}但是我接受了这个错误信息。我该怎么办?

2 个答案:

答案 0 :(得分:1)

只需将注释和初始化移动到声明中即可。它并不依赖于构造函数中的任何东西。实际上其他两个变量也是如此。然后你可以删除构造函数。不要写你不必写的代码。

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(){
        //...

答案 1 :(得分:0)

cannot use annotations within a method body。如果要忽略警告,请将注释移到方法声明之前:

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