2012-02-13 9 views
7

Mam interfejs.Tablica interfejsu w Javie

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

Co się stanie, gdy spróbuję utworzyć taką tablicę?

Module[] instances = new Module[20] 

Jak mogę zaimplementować tę tablicę?

+4

To nie ma sensu. Nie można utworzyć instancji interfejsów. Jaki byłby cel tego? Co próbujesz zrobić? – EboMike

+0

@user Co próbujesz osiągnąć? – Searock

+0

[Co próbowaliście] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython

Odpowiedz

23

tak, jest to możliwe. Musisz wypełnić pola tablicy z obiektów typu Module

instances[0] = new MyModule();

I MyModule jest klasa wykonawczych interfejs modułu. Alternatywnie możesz użyć anonimowych klas wewnętrznych:

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

Czy to odpowiada na twoje pytanie?

6

Będziesz musiał wypełnić tablicę instancjami klas, które implementują ten interfejs.

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

Musisz stworzyć konkretny typ klasy, że wdrożenie tego interfejsu i korzystania z tego w tworzeniu tablicy

1

oczywiście można utworzyć tablicę, którego typ jest interfejs. Musisz tylko umieścić odniesienia do konkretnych wystąpień tego interfejsu w tablicy, albo utworzyć je z nazwą lub anonimowo, zanim użyjesz w nim elementów. Poniżej znajduje się prosty przykład, który wypisuje kod skrótu obiektu tablicy. Jeśli spróbujesz użyć dowolnego elementu, na przykład myArray [0] .method1(), otrzymasz 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(); 
} 
}