0

我有来自Java 项目助手的这段代码。

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

如何new IClasspathEntry[0]运作?

在此处输入图像描述

  1. 如何用 new 实例化接口?
  2. 如何使用数组[0]而不是()新的括号?

添加

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

4

2 回答 2

2

1.如何用new实例化一个接口?

不,永远不能实例化接口。

2.如何用数组[0]代替括号()和new?

IClasspathEntry[0]只是IClasspathEntry(well, asubtype of IClasspathEntry)数组中索引为零的类型元素。你不能实例化一个接口。

IClasspathEntry[] arr = new IClasspathEntry[size];

以上只是创建了一个接受元素的类型数组。IClasspathEntrysubtypes(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;
    }
}
于 2012-12-18T21:15:28.597 回答
1

如何用 new 实例化接口?

new IClasspathEntry[0]正在创建一个array object而不是实例化您的界面。就像new int[4]不实例化原始 int 类型,而是创建一个长度为 4 的数组对象。

如何用数组[0]代替括号()和new?

它是有效的,因为它正在创建一个数组 - 一个 0 长度的数组。

您可以像这样创建一个数组,以便您可以添加添加到其中的不同实现类的多个实例。

IClasspathEntry[] arr = new IClasspathEntry[2];
arr[0] = // instance of class implementing IClasspathEntry
于 2012-12-18T21:13:45.560 回答