Массив интерфейса в Java
у меня есть интерфейс.
public interface Module {
void init();
void actions();
}
что происходит, когда я пытаюсь создать массив такой?
Module[] instances = new Module[20]
Как я могу реализовать этот массив?
4 ответов
да, это возможно. Необходимо заполнить поля массива объектами типа Module
instances[0] = new MyModule();
и MyModule
- класс, реализующий интерфейс модуля. В качестве альтернативы вы можете использовать анонимные внутренние классы:
instances[0] = new Module() {
public void actions() {}
public void init() {}
};
это ответ на твой вопрос?
вам нужно будет заполнить массив экземплярами класса (классов), которые реализуют этот интерфейс.
Module[] instances = new Module[20];
for (int i = 0; i < 20; i++)
{
instances[i] = new myClassThatImplementsModule();
}
вам нужно создать конкретный тип класса, который будет реализовывать этот интерфейс и использовать его в создании массива
конечно, вы можете создать массив, тип которого является интерфейс. Вы просто должны поместить ссылки на конкретные экземпляры этого интерфейса в массив, либо созданный с именем, либо анонимно, прежде чем использовать элементы в нем. Ниже приведен простой пример, который печатает хэш-код объекта Array. Если вы пытаетесь использовать любой элемент, скажите 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();
}
}