【问题标题】:Is it possible to declare an object array in Java and initialize later? [duplicate]是否可以在 Java 中声明一个对象数组并稍后进行初始化? [复制]
【发布时间】:2017-11-22 23:07:04
【问题描述】:

我正在尝试更熟悉 Java 中的对象数组,而我尝试做的一件事是失败是在一行上声明一个对象数组,然后在后面的一行中对其进行初始化。这可能吗?我是在犯格式错误还是只是在尝试做一些我做不到的事情?

tl:博士; Java 对象数组可以在下面做这样的事情吗?

int[] s;
s = new int[]{ and put the list here..}

编辑:添加我当前的代码和错误示例

public class noncombatSKILLS {
        noncombatSKILLS ( String receivName , String receivDescription , int receivDamage )
        {
        name = receivName ;
        description = receivDescription ;
        damage = receivDamage ;
!
!
public class CHARACTER {
noncombatSKILLS[] noncombat;
noncombat[] = {  new noncombatSKILLS( "Scavenge" , "find some parts" , 123 ) } ;

仅使用 CHARACTER 类下的声明行就可以正确编译,但是当我尝试使用其后添加的行进行编译时,我得到 'error: not a statement' 指向 'noncombat' 后面的括号

【问题讨论】:

  • 当您完全尝试您建议的语法时会发生什么?
  • @khelwood 用代码示例和错误更新了问题
  • @AdamS 我知道如何声明和初始化原始数据数组,我什至在我最初的问题中包含了一个。我专门问这个是因为使用自定义类它不能以相同的格式运行

标签: java arrays object initialization


【解决方案1】:

总之——是的。这对于原语都是可能的:

int[] s;
s = new int[] {1, 2, 3};

而对于对象,比如Strings,例如:

String[] s;
s = new String[] {"a", "b", "c"};

编辑:
查看已编辑的问题,问题不在于数组初始化,而在于您不能在 class 下放置任意语句 - 它们应该位于方法、构造函数或初始化块中,例如:

public class CHARACTER {
    // This is a member:
    noncombatSKILLS[] noncombat; 

    // And this is an initializer block:
    {
        noncombat[] = {  new noncombatSKILLS( "Scavenge" , "find some parts" , 123 ) } ;
    }
}

【讨论】:

  • 我是这么认为的,但是使用自定义类/构造函数时出现编译错误。用更多示例更新了我的问题
  • @A.Mulder 查看我编辑的答案。
  • 有趣。所以这只是范围问题?
  • @A.Mulder 我会说类结构,而不是范围。
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 2018-06-13
  • 2013-12-01
相关资源
最近更新 更多