2011-06-14 80 views
2

OK,失敗:爲什麼不在String中使用Java?

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

它失敗如何?堆棧跟蹤? – mdm 2011-06-14 20:26:09

回答

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

+0

+1。謝謝。我接受這個是因爲它最有意義,而且你在一個構造函數或方法裏面設置'roles' ......我更喜歡這個。感謝大家在Java教育我 – cbmeeks 2011-06-14 20:39:32

+0

我遵循你的答案。做得好。你有博客嗎?如果你願意,請分享網址。謝謝。 – Sandeep 2011-06-15 02:23:41

1

你需要把是:

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

+1,但我不想在構造函數或方法之外設置對象。 – cbmeeks 2011-06-14 20:38:24

6

Array initializers(括號中的比特)在這裏你聲明數組變量,或點只適用部分array creation expression的形式爲​​。

所以這是好的:

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

這不,因爲你既沒有聲明,也不是一個數組創建表達式:

x = { "Blah" }; 

但這是很好了,因爲它有一個陣列創建表達式:

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

上面的鏈接指向語言的相關位pecification。

+0

用於選址參考。 – cbmeeks 2011-06-14 20:37:43

0

角色數組沒有通過簡單地聲明它分配內存。

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

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

private String [] roles;

public MyLoginBean(){
String [] blah = new String [] {「User」};

相關問題