我正在查看在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}如何工作?
如果有人可以帮我解决这个问题,我会很感激。
答案 0 :(得分:3)
是的,字面含义正是您所认为的
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}
答案 1 :(得分:1)
它是一个共享超类型Class
的对象数组。
在Java中,一切都是Object
。这意味着如果您希望获得类类型的代码内感知,则需要创建一个Object
来封装类的详细信息。 Java将此Object
称为Class
。
请注意大小写并注意,由于Class
是Object
,您可以在课堂上调用所有Object
方法,例如x.getClass()
,x.wait()
,和x.hashcode()
。
Class[] items = { String.class, Integer.class };
表示创建一个名为items的数组,其中包含Class
个对象。使用表示Object
类和String
类的Integer
来初始化数组。
由于Class
个对象代表类类型,通常这两个对象在非正式演讲中可以互换使用。
答案 2 :(得分:1)
这是Class
new Class[] {...}
创建其内容列在其中的Class
类型的数组。
一般
类型 []表示一个“数组......”就像你想的那样。
事实证明这里的类型是Class
,它在Java中表示正在运行的类或接口。
可能你不应该先了解反射等高级功能,而不必先了解基础知识。
答案 3 :(得分:1)
Class
是描述java类(或接口)的Object
。 Class[]
是这些对象的数组。
语法<ClassName>.class
(例如String.class
)返回特定java类(或接口)的Class
。
可以通过一些语法创建新数组。 new Class[i]
创建一个长度为Class
的新i
数组,并填充默认值(空引用)。 new Class[]{a, b, c}
创建一个包含给定元素Class
,a
和b
的新c
数组。它的长度是3,因为给出了3个元素。
答案 4 :(得分:0)
Class
实际上是一个名为uhmm .. Class的类。
类Class的实例表示正在运行的Java应用程序中的类和接口。
new Class[]
有效。它初始化一个Class引用数组。但是,与通常的对象数组一样,引用为空。
类Class
没有公共构造函数。所以你不能说new Class()
答案 5 :(得分:0)
Class
是一个表示...类和相关元数据的java类。所以Class[]
是Class
个对象的数组。
java中的每个类都有一个名为Class类的Class的静态成员变量,这里你要做的是
这相当于:
TwoString ts = new TwoString("a","b");
但你发布的方式是使用Reflection / Introspection。
答案 6 :(得分:0)
我不确定这是否是您正在寻找的,但示例中的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);
所以类数组是设置要使用的构造函数。逐行的步骤是: