Массив из методов.

 
 
 
Сообщения:68
Здорово, парни!
Нашел код:
public void A1() { System.out.println("A4") ; }
    public void A2() { System.out.println("A4") ;}
    public void A3() {System.out.println("A4") ;}
    public void A4() {System.out.println("A4") ;}

    public static interface MoveAction {
        void move();
    }

    public MoveAction[] moveActions = new MoveAction[] {
        new MoveAction() { public void move() {A1(); } },
        new MoveAction() { public void move() { A2(); } },
        new MoveAction() { public void move() { A3(); } },
        new MoveAction() { public void move() { A4(); } },
    };

    public void move(int index) {
        moveActions[1].move();
    }
}

Знатоки, внимание, вопрос:"Как присобачить сюда main(), чтобы вызывать к примеру первый метод из массива из main метода?"
moveActions[1].move();

(Делаю сложного робота!!! Работаю на себя!!!)

!y=f(x)
Изменен:09 фев 2019 22:40
 
 
Сообщения:783
Во первых, надо добавить заголовок класса:
public class ClassWithMethods {

и затем в этот класс добавить метод main:
    public static void main(String[] a) {
        ClassWithMethods inst = new ClassWithMethods();
        inst.move(1);
    }


Элементы массива можно описывать по разому:
private MoveAction[] moveActions = new MoveAction[] {
            new MoveAction() { public void move() {
                System.out.println("A1") ;
            } },
            new MoveAction() { public void move() {A2(); } },
            () -> { System.out.println("A3") ;},
            this::A4,
    };


private - чтобы весь доступ к массиву методов шел только через метод
public void move(int index) 
Изменен:10 фев 2019 14:11
 
 
Сообщения:68
Попробовал так: Что то красным подчеркивает... Вот как Вы сказали:



package j;


public class K {

    public static void main(String[] a) {
        K inst = new K();
        inst.move(1);
    }

private K[] move = new K[] {
        new K() { public void move(int i) { System.out.println("1"); } },
        new K() { public void move(int i) { System.out.println("2"); } },
        new K() { public void move(int t) { System.out.println("3"); } },
        new K() { public void move(int i) { System.out.println("4"); } },
        
};


}

!y=f(x)
Изменен:12 фев 2019 03:17
 
 
Сообщения:783
UserSuperPupsik:
private K[] move = new K[] {


потому что вы заменили MoveAction на K. А я так не говорил.
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет