java设置占位符或变量方法

m0rkklqb  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(301)

我知道类似的东西在python和其他语言中是可能的,但是我想看看在java中是否有一些基本的东西我忽略了,或者如果语言没有设置成这样,基本上我想有一个if/then or开关,它现在如下所示:

if X {
fillRect(<bunch of variables>);
} else
drawRect(<bunch of variables>);

相反,我想做以下的事情,这在其他语言中是可能的,imho更优雅,因为不需要为了一个简单的选择而重复

if X{
funct = fillRect;
} else funct=drawRect;
funct(<bunch of variables>);

难道没有一个相当简单的方法可以做到这一点吗?谢谢。

zyfwsgd6

zyfwsgd61#

是的,这在java中是绝对可能的。您只需要一个接口来定义可以分配和随后调用的“函数”。
例如:

@FunctionalInterface
interface Operation { 
    int operate(int arg1, int arg2);
}

Operation operation;
if (X)
    operation = (a1, a2) -> a1 + a2;
else
    operation = (a1, a2) -> a1 - a2;
int result = operation.operate(1, 2);

我使用lambda函数来定义操作,但它们也可以很容易地成为方法引用。
java还附带了许多标准接口 java.util.function Package java.base 所以你通常甚至不需要定义一个接口。我的例子中的一个可以替换为 BinaryOperator<Integer> .

相关问题