【问题标题】:Declaration of array size is illegal声明数组大小是非法的
【发布时间】:2014-03-01 17:57:36
【问题描述】:

我是 Java 初学者,我找不到关于这个非常基本问题的信息:

Eclipse 不允许我声明一个固定大小的数组:

public class Camera {
    public Boolean [10] glCapabilities;
    //...
}

上面写着,

标记“10”的语法错误,删除此标记

所以我可以声明一个“动态”大小的数组,但不能声明一个固定大小的数组。对我来说,这就像将 10 个公共布尔值声明为类的属性。

这是怎么回事?

【问题讨论】:

  • Google 是一个很棒的工具。输入“Java tutorial ”,一般第一个结果就是官方教程的链接。
  • 正如我所说:我已经在 Google 和 StackOverflow 上阅读了很多数组示例,但我找不到指定的事实,即我无法在声明时声明大小。对我来说,来自 C++ 是毫无意义的。在阅读了 DreamBig 的 4 次链接后,我意识到了。我仍然认为我写的语法应该被允许。
  • 为什么我的问题被否决了?我认为这很清楚;在问之前我已经在 Goole 上花了 15 分钟;关于有用性,我认为我不必先确保我的问题对其他人有用,然后才能对我有用。

标签: java arrays


【解决方案1】:

Java 中的数组声明不需要或允许指定大小。这需要考虑int[10] 一个类型,例如type(int[10]) != type(int[5])。但在 Java 中,您可以只声明 T[] 类型,而不能强制声明的大小。

你只需在初始化时创建一个指定大小的数组:

boolean[] glCapabilities = new boolean[10];

在声明期间指定大小在需要知道确切大小的语言中是有意义的(例如可以在堆栈上分配它们的 C/C++),但在 Java 中不是必需的,因为它们驻留在堆中任何情况。

【讨论】:

  • 非常感谢您的澄清。确实,我来自 C++,很抱歉这么说,但 Java 和 C++ 之间的差异非常有利于 C++。这是我第三次面对 Java 缺乏代码让我负责(其他情况:运算符重载、导入机制)。
【解决方案2】:
public Boolean[] glCapabilities = new Boolean[10];

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多