Как переопределить метод в методе с помощью лямбда выражения?

Ситуация следующая: делаю для свинга метод для отображения произвольных схем с помощью Graphics2D. Проблема в том, что нужно в методе сделать переопределение метода painComponent(Graphics G). Переопределенный метод в виде лямбды должен выглядеть следующим образом:

@Override
public void paintComponent(Graphics G){ 
    Graphics g2d = new Graphics2D(); 
    g2d.fillOval(...); 
    g2d.dispose(); 
    // ну и небольшое продолжение снизу
} 

Как в итоге переопределить данный метод с помощью лямбды, или же есть иной путь?


Ответы (1 шт):

Автор решения: Zhenyria

Вы можете сделать несколько лямбд-выражений вот так:

private Consumer cons = 
    (g) -> {
        Graphics g2d = new Graphics2D(); 
        g2d.fillOval(...); 
        g2d.dispose();
        ....
    }

а потом, например, сделать в методе блок switch с выбором разных Consumer в зависимости от условия:

@Override
public void paintComponent(Graphics g){ 
    switch (//нужное вам условие) {
        case //условие 1: 
            cons.accept(g);
            break;
        //далее...
    }
} 

Либо воспользуйтесь паттерном Фабрика.

→ Ссылка