我的代码来自Java project helper。
javaProject.setRawClasspath(new IClasspathEntry[0], null);
new IClasspathEntry[0]
如何运作?
[0]
代替括号()
使用新的?我认为这是一种更安全的说法。
答案 0 :(得分:2)
1.如何使用new?
实例化接口
不,一个接口永远不能被实例化。
2.如何使用数组[0]代替括号()和新的?
IClasspathEntry[0]
只是数组中索引为零的IClasspathEntry(well, asubtype of IClasspathEntry)
类型的元素。你不能实例化一个接口。
IClasspathEntry[] arr = new IClasspathEntry[size];
以上只是创建了一个IClasspathEntry
类型的数组,它接受subtypes(class's which implement IClasspathEntry)
元素。
interface IClasspathEntry {}
class Xyz implements IClasspathEntry {}
class main
{
public static void main(String...args)
{
IClasspathEntry[] arr = new IClasspathEntry[1];
IClasspathEntry inst = new Xyz();
arr[0] = inst;
}
}
答案 1 :(得分:1)
如何使用new实现接口?
new IClasspathEntry[0]
正在创建array object
而不是实例化您的界面。
就像new int[4]
没有实例化原始int类型一样,但是创建了一个长度为4的数组对象。
如何使用数组[0]代替括号()和新的?
它是有效的,因为它创建了一个数组 - 一个0长度的数组。
您可以创建这样的数组,以便添加添加到其中的不同实现类的多个实例。
IClasspathEntry[] arr = new IClasspathEntry[2];
arr[0] = // instance of class implementing IClasspathEntry