Почему этот String [] не работает в Java? - PullRequest
2 голосов
/ 15 июня 2011

ОК, это не удалось:

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 ]

11 голосов
/ 15 июня 2011

Попробуйте

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[]{...}

6 голосов
/ 15 июня 2011

Инициализаторы массива (бит в фигурных скобках) доступны только в точке, где вы объявляете переменную массива или как часть выражения создания массива вида new <em>ElementType</em>[] <em>initializer</em>.

Так что все в порядке:

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

Это не так, потому что у вас нет ни объявления, ни выражения для создания массива:

x = { "Blah" };

но это снова хорошо, так как у него есть выражение создания массива:

x = new String[] { "Blah" };

Ссылки выше относятся к соответствующим битам спецификации языка.

1 голос
/ 15 июня 2011

Нужно поставить как:

private String [] roles  = {"User"};  // Only allowed at the time of declaration.
0 голосов
/ 15 июня 2011

массиву ролей не выделена память, просто объявив ее.

private String [] role = new String [1]; // если вы знаете только один элемент

public MyLoginBean () {
String [] blah = {"Пользователь"};

или

private String [] ролей;

public MyLoginBean () {
String [] blah = new String [] {"Пользователь"};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...