Operatoren If mit variabelem Operator

Frithjof

Mitglied
Hallo,

ich möchte aus einer Datenquelle IF abfragen machen.
Die Datenquelle siht so aus:
List werte
WertA int
WertB int
Ergebnis String (ein Definierter Text)
Operator String​

Es ist also noch nicht bekannt welcher Operator benutzt werden soll.
Jetzt könnte ich für jeden Fall ein Case mit entsprechender If machen. Aber ich suche einen einfacheren weg. In etwa so:
//Pseudocode
String ergebnisstexte;
while (List:l){
if(WertA operator WertB){
ergebniss += Ergebnisstexte​
}​
}
Es geht mir also darum den Operator "Dynamisch" je nach Fragestellung des Listenelementes zu generieren, ohne für jeden Fall extra Case Elemente machen zu müssen weil das eine große menge Code werden würde und hoff auf einen einfacheren weg.

danke und Grüße
 
Ein Paradebeispiel für den Einsatz von Interfaces.

Java:
package snippet;

import java.util.ArrayList;
import java.util.List;

public class FlexibleOperators {

    public static void main(String[] args) {


        String stringA = "Hello ";
        String stringB = "World";
       
        List<Operator> list = new ArrayList<>();
       
        // Java 8
        Operator concat = (a,b) -> a+b; //Das hier macht "das gleiche" wie die Klasse ConcatOperator
                                        //Nennt sich Lambda-Ausdruck und ist nur eine Kurzschreibweise.
        // Ende Java 8
       
        list.add(new ConcatOperator());
        list.add(concat);
        list.add(new TwoTimesFirstOperator());
        list.add(new TwoTimesFirstAndThreeTimesSecondOperator());
        list.add(new ConcatLengthToStringOperator());       
        list.add(new LengthsToStringOperator());
       
        for (Operator op : list){
            System.out.println(op.operate(stringA, stringB));
        }
       
       
       
    }

}

interface Operator{
    public String operate(String a, String b);
}


class ConcatOperator implements Operator{
    @Override
    public String operate(String a, String b) {       
        return a+b;
    }   
}
class TwoTimesFirstOperator implements Operator{
    @Override
    public String operate(String a, String b) {       
        return a+a;
    }   
}
class TwoTimesFirstAndThreeTimesSecondOperator implements Operator{
    @Override
    public String operate(String a, String b) {       
        return a+a+b+b+b;
    }   
}
class ConcatLengthToStringOperator implements Operator{
    @Override
    public String operate(String a, String b) {       
        return String.valueOf(a.length()+b.length());
    }       
}
class LengthsToStringOperator implements Operator{
    @Override
    public String operate(String a, String b) {       
        return a.length() + " "+b.length();
    }       
}
 

Zurück
Oben