537 Stimmen

Wie übergibt man eine Funktion als Parameter in Java?

Wie kann man in Java eine Funktion als Argument einer anderen Funktion übergeben?

5voto

Aram Kocharyan Punkte 19721

Ich habe das von @jk. erwähnte Befehlsmuster verwendet und einen Rückgabetyp hinzugefügt:

public interface Callable<I, O> {

    public O call(I input);   
}

4voto

Zatran Punkte 51

Ich weiß, dass dies ein ziemlich alter Beitrag ist, aber ich habe eine andere, etwas einfachere Lösung. Sie könnten eine weitere Klasse erstellen und diese abstrakt machen. Als nächstes erstellen Sie eine abstrakte Methode, die Sie nach Belieben benennen können. In der ursprünglichen Klasse machen Sie eine Methode, die die neue Klasse als Parameter nimmt, in dieser Methode rufen Sie die abstrakte Methode auf. Es wird ungefähr so aussehen.

public class Demo {

    public Demo(/.../){

    }

    public void view(Action a){
        a.preform();
    }

    /**
     * The Action Class is for making the Demo
     * View Custom Code
     */
    public abstract class Action {

        public Action(/.../){

        }

        abstract void preform();
    }
}

Jetzt können Sie eine Methode innerhalb der Klasse wie folgt aufrufen.

/...
Demo d = new Demo;
Action a = new Action() {

    @Override
    void preform() {
        //Custom Method Code Goes Here
    }
};

/.../
d.view(a)

Wie gesagt, ich weiß, dass es alt ist, aber ich denke, dass dieser Weg ein wenig einfacher ist. Hoffentlich hilft es.

-15voto

Claude Punkte 455

Java unterstützt (noch) keine Abschlüsse. Aber es gibt andere Sprachen wie Scala und Groovy, die in der JVM laufen und Closures unterstützen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X