如果我们无法在Java中创建接口实例,则数组只是对象。那么,如何创建接口数组呢?

时间:2015-06-04 08:01:24

标签: java arrays interface

我正在阅读一段代码,这让我很困惑。

interface Interviewer{
    void conductInterview();
}

class Employees {
    String name;
}

class HRexecutive extends Employees implements Interviewer{
    String[] Specialization;

    public void conductInterview(){
        System.out.println("HR conduct interview");
    }
}

public class paractise1 {
    public static void main(String[] args) {            
        Interviewer interviewers [] = new Interviewer[1];
        interviewers [0] = new HRexecutive();
    }
}

上面的代码编译成功,但我很困惑如何创建一个接口“Interviewer”数组,如果在Java中将Array视为对象。

2 个答案:

答案 0 :(得分:3)

接口只不过是foreach ($keys as $key) { foreach ($array[$key] as $key2 => $value) { if(($key==0 && ($key2 == 3 || $key2 == 4)) || ($key == 1) ) $array[$key][$key2] = //your value; } } 具有某些方法/属性的断言。此外,数组不存储对象本身,而是存储对象的引用。它与存储ObjectInterviewer实例的HRexecutive类型变量相同。引用Interviewer i = new HRexecutive();驻留在堆栈内存中(至少,如果在方法中定义了i)并且保存对通过i创建的实际实例的引用,该实例位于堆内存中

正如EJP's answer中所述:如果数组元素的泛型类型为new HRexecutive(),则会使用null对其进行初始化。因此,在创建instanceof Object数组时,不会调用接口的构造函数。

答案 1 :(得分:2)

数组是一个对象。它包含对接口类型的对象的引用。这些引用最初为null。创建数组时,没有任何地方创建接口的实例。