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ę?
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ę?
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?
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();
}
Musisz stworzyć konkretny typ klasy, że wdrożenie tego interfejsu i korzystania z tego w tworzeniu tablicy
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();
}
}
To nie ma sensu. Nie można utworzyć instancji interfejsów. Jaki byłby cel tego? Co próbujesz zrobić? – EboMike
@user Co próbujesz osiągnąć? – Searock
[Co próbowaliście] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ironchefpython