有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

创建Java数组时的默认构造函数问题

我有以下课程:

public class ArrayObjects<E> implements SomeImp<E>{
    int maxCapacity, actualSize;

    public ArrayObjects(){
        maxCapacity = 10;
        array = (E[]) new Object[maxCapacity];
    }
}

Eclipse会标记一个错误并显示以下内容:

“无法将数组解析为变量”

此外,它还显示了一些其他详细信息:

-类型安全:未选中从对象[]到E[]的强制转换

有人知道我做错了什么吗?我的目标是在我的类构造函数中有一个数组,它可以容纳任何类型的对象(这就是为什么我试图使它成为泛型的),但显然这种方法不起作用

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    错误信息会准确地告诉您出了什么问题。没有名为array的声明变量

    public class ArrayObjects<E> implements SomeImp<E> {
        int maxCapacity, actualSize;
        E[] array; // <- The missing declaration
    
        @SuppressWarnings("unchecked") // <- Suppress the "unchecked cast" warning
        public ArrayObjects() {
            maxCapacity = 10;
            array = (E[]) new Object[maxCapacity];
        }
    }
    

    对于未经检查的强制转换,最好的方法是如上所示抑制它