“new IClasspathEntry [0]”如何工作?

时间:2012-12-18 21:12:13

标签: java interface new-operator

我的代码来自Java project helper

javaProject.setRawClasspath(new IClasspathEntry[0], null);

new IClasspathEntry[0]如何运作?

enter image description here

  1. 如何使用new实现接口?
  2. 如何使用数组[0]代替括号()使用新的?
  3. ADDED

    我认为这是一种更安全的说法。

2 个答案:

答案 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