Home > Net >  Java (latest version) Lambda: replace anonymous inner class by lambda
Java (latest version) Lambda: replace anonymous inner class by lambda

Time:10-02

I have got a class which contains the following:

slider.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            // creating font object and store textarea value font
            Font font = area.getFont();
            // setting size from getting slider value
            float size = ((JSlider) e.getSource()).getValue();
            // setting font size for textarea
            area.setFont(font.deriveFont(size));

        }
    });

VScode Insider tells me to replace the inner class with lambda,

Here is a screenshot if you want to see what I mean, ChangeListener is underline as yellow

So I tried to think of ways and couldn't come up with any since I am not experienced enough, any one want to help me find other ways how to write this "ChangeListener" please...?

CodePudding user response:

If you use Intellij IDEA it will do it for you.

slider.addChangeListener(e -> {
            // creating font object and store textarea value font
            Font font = area.getFont();
            // setting size from getting slider value
            float size = ((JSlider) e.getSource()).getValue();
            // setting font size for textarea
            area.setFont(font.deriveFont(size));
    });

CodePudding user response:

I never like these long lambda methods. I prefer something like:

private void processSliderEvent(ChangeEvent ce) { ... }

slider.addChangeListener(this::processSliderEvent);

  • Related