【问题标题】:Default constructor issue when creating an array Java创建数组Java时的默认构造函数问题
【发布时间】:2015-02-19 01:49:01
【问题描述】:

我有以下课程:

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

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

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

“数组无法解析为变量”

它还显示了一些额外的细节:

-类型安全:从 Object[] 到 E[] 的未经检查的强制转换

有谁知道我做错了什么?我的目标是在我的类构造函数中有一个可以容纳任何类型对象的数组(这就是我试图使其成为通用对象的原因)但显然这种方法行不通。

感谢您的帮助!!

【问题讨论】:

标签: java arrays constructor


【解决方案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];
    }
}

就未经检查的演员表而言,您能做的最好的事情就是抑制它,如上所示。

【讨论】:

  • 感谢您的回复!另一种初学者问题。如果我将 public 放在我的 int/ E[ ] 声明前面有什么区别?再次感谢
  • @JTarantino public 表示该变量对其他类可见
  • 这里有一个很好的资源来描述 Java 中的访问修饰符:docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 2021-09-04
  • 2017-08-21
  • 2016-06-05
  • 2013-06-08
相关资源
最近更新 更多