expected but I don't want use identifier

问题描述 投票:-1回答:2

这是我的错误消息:

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];的数据字段而不是新的T[ ] data.But我接受此错误消息。我能做什么?

java generics
2个回答
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(){
        //...

0
投票

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

@SuppressWarnings("unchecked")
public Set()
{
    used = 0;
    capacity = 1024;
    data = (T[]) new Object[10];
}
© www.soinside.com 2019 - 2024. All rights reserved.