2012-02-13 18 views
7

Tengo una interfaz.Matriz de interfaz en Java

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

¿Qué ocurre cuando intento crear una matriz como esta?

Module[] instances = new Module[20] 

¿Cómo puedo implementar esta matriz?

+4

Eso no tiene sentido. No puedes crear instancias de interfaces. ¿Cuál sería el propósito de eso? ¿Que estás tratando de hacer? – EboMike

+0

@user ¿Qué estás tratando de lograr? – Searock

+0

[¿Qué ha intentado] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython

Respuesta

23

sí, es posible. Es necesario rellenar los campos de la matriz con los objetos de tipo Module

instances[0] = new MyModule();

Y MyModule es una clase que implementa la interfaz del módulo. Alternativamente, podría utilizar clases internas anónimas:

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

¿Responde a esta pregunta?

6

Debería completar la matriz con instancias de una clase (es) que implementan esa interfaz.

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

lo necesario para crear un tipo de clase concreta que aplicar esa interfaz y el uso que en su creación de la matriz

1

Por supuesto, puede crear una matriz cuyo tipo es una interfaz. Solo tiene que poner referencias a instancias concretas de esa interfaz en la matriz, ya sea creada con un nombre o anónimamente, antes de usar los elementos en ella. A continuación se muestra un ejemplo simple que imprime el código hash del objeto de la matriz. Si intenta utilizar cualquier elemento, digamos myArray [0] .method1(), obtendrá un 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(); 
} 
}