Мой код должен предварительно проверить серию сложных регулярных выражений с помощью различных вспомогательных классов. Затем он должен выполнить серию вызовов функций после проверки, если все в порядке. Если конструкция case не улавливает что-то, мне нужно зарегистрировать это позже.
Я стараюсь избегать двух гудящих дублирующих операторов if
.
Я думал, если большой if
оператор (или switch
) должен был вернуть функцию, я мог проверить, была ли эта возвращенная функция нулевой или нет, чтобы выполнить предварительную проверку. Если бы это было ноль, я мог бы также зарегистрировать это. Если бы оно не было нулевым, я мог бы позвонить напрямую. Таким образом, я могу избавиться от необходимости иметь сложную логику c, проверяющую две части кода.
Я думал что-то вроде:
class Playground {
public static Function getFunction(String condition) {
switch (condition) {
case "one":
return Function one(1);
case "two":
return Function two("two",2);
default:
return null;
}
}
public static void one(int i) {
System.out.println("one: i: " + i);
}
public static void two(String s, int i) {
System.out.println("two: s: " + s + " i: " + i);
}
public static void main(String[ ] args) {
Function f1 = getFunction("one");
Function f2 = getFunction("two");
f1();
f2();
}
}
Но Я не совсем понимаю правильный синтаксис.
Может кто-нибудь сказать мне, возможно ли это в Java? Если это так, возможно, кто-то может посоветовать исправления синтаксиса.
- У всех вызываемых методов будет void return.
- Они будут вызовами экземпляров, а не stati c методами.
- Возвращаемая функция может иметь различное количество входных параметров. Когда метод вызывается, мне нужно как-то настроить это в том, что также возвращается.
Если такого способа нет, есть ли альтернатива, возможно, шаблон проектирования, который может помочь? (Кроме отображения сложного оператора if во что-то вроде целого числа. Если ничего не найдено, то это 0, иначе у вас есть значения. Тогда у вас будет другой переключатель, основанный на int.)