在java中int,float等是基本類型。如果我們需要使用泛型,則使用包裝類。 不過還是以下聲明工程在Java中,int.class是什麼意思
Class<Integer> intClass=int.class
我們怎麼能叫int.class
即使它是一個基本類型?
在java中int,float等是基本類型。如果我們需要使用泛型,則使用包裝類。 不過還是以下聲明工程在Java中,int.class是什麼意思
Class<Integer> intClass=int.class
我們怎麼能叫int.class
即使它是一個基本類型?
甲原始成爲對象
對於基元,可有類對象作爲在相應的封裝類命名類型的常量 - 即int.class改變爲java.lang.Integer.TYPE 。對於其他類型,編譯器會在正在編譯的類中創建一個私有成員變量來存放Class對象,並生成使用Class.forName()初始化該成員的代碼。
發現了一些discussion
和一個不錯的discussion here和你的例子也包括在這個環節。
從那裏的幾句話:
一類怎麼能是一種原始的?讓我們更多地混淆事情。我們可以訪問類對象通過編碼代表定義的類,說:
Equation.class // returns the Equation Class object
但是,我們也可以說:
int.class
獲取類對象,它的名字是「int」 。請注意,我們沒有將getClass()方法發送給對象;我們使用了保留字作爲內置的基本類型(int),並使用點符號訪問其類「字段」。這返回一個Class對象!
int.class
與Class<Integer>
是根據規範相同的類型。
從Docs:
的基本Java類型(布爾,字節,字符,短,整型,長, 浮點以及雙),並且關鍵字void也表示爲 類對象。
15.8.2。類字面
類文字是由一個類, 接口,陣列或原始類型,或僞型空隙的名稱的表達,通過隨後 「」和令牌類。
C的類型。類,其中C是類,接口或 陣列類型的名稱,是
Class<C>
。類型p.class,其中p是一個基本類型的名稱, 是
Class<B>
,其中B是式P的表達後 裝箱轉換的類型。void.class的類型是
Class<Void>
。如果指定類型是類型變量 或參數化類型或其元素類型爲 類型變量或參數化類型的數組,則這是編譯時錯誤。
如果指定的類型不表示類型 是可訪問的,並且範圍在 類文字出現的位置,則是編譯時錯誤。
按照當前實例的類 的定義類加載器的定義,類文字評估爲指定類型的Class對象(對於void爲 )。
說它「*是*'類
類文字是由類,接口,數組或原始類型的名稱或僞類型void,後跟'。'組成的表達式。和令牌類。
表示爲類對象。
所以System.out.println(int.class);
將打印int
而System.out.println(Integer.class);
將打印class java.lang.Integer
。
這裏是你的答案.. http://stackoverflow.com/questions/1072066/about-the-class-property-field http://stackoverflow.com/questions/10076629/如何做一個類的財產工作 –