好的,这失败了:
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"};
}
}
任何信息都将受到赞赏。
感谢。
答案 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”};