[英]Class[] - What does it mean?
我正在查看一個教程: http : //www.ibm.com/developerworks/library/j-dyn0603/
特別是有一節給出了以下示例:
Class[] types = new Class[] { String.class, String.class };
Constructor cons = TwoString.class.getConstructor(types);
Object[] args = new Object[] { "a", "b" };
TwoString ts = (TwoString)cons.newInstance(args);
我並不完全遵循Class []所代表的內容。 我讀它的方式,這就是'一個叫做類型的Class對象數組'。 我對新語句中使用的語法有點不熟悉 - 新的Class [] {String.class,String.class}如何工作?
如果有人可以幫我解決這個問題,我將不勝感激。
是的,字面意思正是你的想法
Class[] types = new Class[] { String.class, String.class };
是一行中的聲明和初始化。 它說創建一個包含Class
類型對象的數組,並用兩個Class
類型的對象初始化它,即String.class和String.class。
一個類似的例子
int[] nums = new int[]{1,2,3};
要么
float[] decimals = new float[]{1.2, 3.1, 5.2}
它是一個共享超類型Class
的Objects數組。
在Java中,一切都是Object
。 這意味着如果您希望獲得類類型的代碼內感知,則需要創建一個可以封裝類的詳細信息的Object
。 Java將此Object
稱為Class
。
注意大小寫並注意,因為Class
是一個Object
,所以可以調用類上的所有Object
方法,如x.getClass()
, x.wait()
和x.hashcode()
。
Class[] items = { String.class, Integer.class };
表示創建一個名為items的數組,其中包含Class
對象。 使用表示String
類和Integer
類的Object
初始化數組。
由於Class
對象代表類類型,因此通常兩者在非正式語音中可互換使用。
那是Class
類型的數組
該
new Class[] {...}
創建類型為Class
的數組,其內容列在里面。
一般來說
類型 []表示,就像你想的那樣“......的數組”。
事實證明這里的類型是Class
,它在Java中表示正在運行的類或接口。
可能你不應該先了解反射等高級功能,而不必先了解基礎知識。
Class
是一個描述java類(或接口)的Object
。 Class[]
是這些對象的數組。
語法<ClassName>.class
(例如String.class
)返回特定java類(或接口)的Class
。
可以通過一些語法創建新數組。 new Class[i]
創建一個新的Class
數組,其長度為i
並填充默認值(null引用)。 new Class[]{a, b, c}
創建的新數組Class
包含給定元素a
, b
和c
。 它的長度是3,因為給出了3個元素。
Class
實際上是一個名為uhmm ..的類。
類Class的實例表示正在運行的Java應用程序中的類和接口。
new Class[]
有效。 它初始化一個Class引用數組。 但是,與通常的對象數組一樣,引用為空。
Class Class
沒有公共構造函數。 所以你不能說new Class()
Class
是一個java類,表示一個類和相關的元數據。 所以Class[]
是Class
對象的數組。
java中的每個類都有一個名為Class類的Class的靜態成員變量,這里你要做的是
這相當於:
TwoString ts = new TwoString("a","b");
但你發布的方式是使用Reflection / Introspection。
我不確定這是否是您正在尋找的,但示例中的Class[]
模仿該TwoString類中的構造函數。 對我來說,如果他們使用兩種不同的類型會更清楚。 所以如果TwoString類看起來像這樣:
public class TwoString {
private String m_s1;
private Integer m_s2;
public TwoString(String s1, Integer s2) {
m_s1 = s1;
m_s2 = s2;
}
}
這個類名不再存在了,但我認為這很容易解決。 代碼示例的其余部分將變為:
Class[] types = new Class[] { String.class, Integer.class };
Constructor cons = TwoString.class.getConstructor(types);
Object[] args = new Object[] { "a", 1 };
TwoString ts = (TwoString)cons.newInstance(args);
所以類數組是設置要使用的構造函數。 逐行的步驟是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.