为什么这个String []在Java中不起作用?

时间:2011-06-14 20:23:47

标签: java arrays string

好的,这失败了:

public class MyLoginBean extends org.apache.struts.action.ActionForm {

    private String[] roles;

    public MyLoginBean() {
        this.roles  = {"User"};
    }
}

这有效:

public class MyLoginBean extends org.apache.struts.action.ActionForm {

    private String[] roles;

    public MyLoginBean() {
        String[] blah  = {"User"};
    }
}

任何信息都将受到赞赏。

感谢。

4 个答案:

答案 0 :(得分:11)

尝试

public class MyLoginBean extends org.apache.struts.action.ActionForm {

    private String[] roles;

    public MyLoginBean() {
        this.roles  = new String[]{"User"};
    }
}

如果只有声明和初始化,则可以使用类型String[] foo = {"bar1", "bar2"};的数组初始值设定项。如果从声明中分离初始化,则无法执行{...};你必须new String[]{...}

答案 1 :(得分:6)

Array initializers(大括号中的位)仅在您声明数组变量或作为array creation expression形式{的一部分时才可用{1}}。

所以这很好:

new ElementType[] initializer

这不是,因为你既没有声明也没有数组创建表达式:

// Variable declaration
String[] x = { "Blah" };

但这又好了,因为它有一个数组创建表达式:

x = { "Blah" };

上面的链接是语言规范的相关部分。

答案 2 :(得分:1)

你需要把is as:

private String [] roles  = {"User"};  // Only allowed at the time of declaration.

答案 3 :(得分:0)

roles数组没有通过简单地声明来分配内存。

private String [] roles = new String [1]; //如果你只知道一个元素

public MyLoginBean(){
     String [] blah = {“User”};

private String [] role;

public MyLoginBean(){
     String [] blah = new String [] {“User”};