2012-02-13 2 views
7

인터페이스가 있습니다.Java의 인터페이스 배열

public interface Module { 
     void init(); 
     void actions(); 
} 

이렇게 배열을 만들면 어떻게됩니까?

Module[] instances = new Module[20] 

어떻게이 어레이를 구현할 수 있습니까?

+4

그건 의미가 없습니다. 인터페이스를 인스턴스화 할 수 없습니다. 그 목적은 무엇입니까? 너 뭐하려고? – EboMike

+0

@user 달성하려는 목표는 무엇입니까? – Searock

+0

[무엇을 시도 했습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython

답변

23

예, 가능합니다. 입력 Module의 객체

instances[0] = new MyModule();

그리고 MyModule와 배열의 필드를 작성해야하는 모듈 인터페이스를 구현하는 클래스입니다. 또는 익명 내부 클래스를 사용할 수 있습니다.

instances[0] = new Module() { 
public void actions() {} 
public void init() {} 
}; 

이 질문에 대한 답변은 있습니까?

6

해당 인터페이스를 구현하는 클래스의 인스턴스로 배열을 채워야합니다.

Module[] instances = new Module[20]; 
for (int i = 0; i < 20; i++) 
{ 
    instances[i] = new myClassThatImplementsModule(); 
} 
4

당신은 그 인터페이스를 구현하고 배열 생성이 유형의 인터페이스 인 배열을 만들 수 있습니다 물론

1

에 그 을 사용 구체적인 클래스 형식을 만들어야합니다. 요소를 사용하기 전에 이름이나 익명으로 만든 배열에 해당 인터페이스의 구체적인 인스턴스에 대한 참조를 넣기 만하면됩니다. 다음은 배열 객체의 해시 코드를 인쇄하는 간단한 예제입니다. 요소를 사용하려고하면 myArray [0] .method1()과 같이 NPE를 얻습니다.

public class Test { 
public static void main(String[] args) { 
    MyInterface[] myArray = new MyInterface[10]; 
    System.out.println(myArray); 
} 
public interface MyInterface { 
    void method1(); 
    void method2(); 
} 
} 
관련 문제