2017-07-17 27 views
0

Begining的Java瞭解Java新的Class []數組和實施

有人能打破什麼怎麼回事

protected Class<?>[] getServletConfigClasses() { 
    // TODO Auto-generated method stub 
    return new Class[] { 
      WebApplicationContextConfig.class 
    }; 
} 

我的理解是,這是預計其回報是數組的方法未知類型的Class對象

但是,什麼是回報? 匿名類對象數組的實例化,同時沒有構造函數及其實現塊?

什麼是本作進一步閱讀的名字和我似乎無法找到這個學科領域?

+0

https://stackoverflow.com/questions/15177463/initializing-array-with-values-should-i-explicitly-instance-the-class-or-not – ajb

回答

2

沒有匿名類對象初始化。 Class是一個java類,與其他任何Java類一樣,但有一個名稱必然會混淆Java初學者。

聲明

return new Class[] { 
      WebApplicationContextConfig.class 
    }; 

相當於

Class [] result = new Class[1]; 
result[0] = WebApplicationContextConfig.class; 
return result; 

WebApplicationContextConfig.class被稱爲class literal,並here是一些關於他們的討論。

+1

是啊是有道理的,就像'new String [] {「foo」,「bar」};'是聲明一個String數組,並同時用值初始化它。 我想'班'把我扔了。乾杯 – succeed

+0

@succeed:的確如此。良好的編碼, –

0

它只是聲明的Class陣列,並用一個元件(WebApplicationContextConfig的類定義)

0

它是通配符類型的陣列。見this更多

0

這是一個數組初始化。當你說

new Something[] { x1, x2, x3 } 

它創建Something類的一個新的數組,並初始化,無論你告訴它花括號中的數值。新數組的長度是值的數量。

我想你可能有一個非常類似的語法來混淆它:

new Something() { class declarations, method overrides, etc. } 

這其中產生的Something一個匿名子類,它使用了大量的用於創建實現接口的匿名子類。儘管外觀非常接近,但它與數組初始化器語法並不完全相關。

1

它是具有默認值的聲明的陣列。在Java中,它是製作數組的簡短方式。

String[] names = {"Arvind","Aarav"}; // initialization 

現在重新分配一個全新的數組。

names = new String[]{"Rajesh","Amit","Mahesh"}; //re-initalization 

與方法同樣的事情,我們可以說,返回星期幾

public String[] weekdays(){ 
    String[]days={"Sun","Mon","Tue"}; 
    return days; 
} 

OR

public String[] weekdays(){ 
    return new String[]{"Sun","Mon","Tue"}; 
} 

現在關於Class[],類型Class可能值是nullSomeClassName.class

Class stringClass = String.class; 
Class[] moreClasses = {Long.class, Boolean.class, java.util.Date.class};