【发布时间】:2020-09-09 18:26:39
【问题描述】:
我在 java 中有一个 if 条件,它在代码中的许多地方再次出现。我想避免一次又一次地写整个条件。在 C 语言中,我可以使用#define 来做到这一点
#define cond ((i==2) && (j==5) && (k==8))
int main() {
if(cond)
}
如何在 java 中实现相同的功能?我可能可以创建另一种评估这种情况的方法 -
main() {
if(cond())
}
cond() {
return (i==2) && (j==5) && (k==8);
}
但我想知道是否可以避免创建另一个函数。
更新 -
我意识到我应该添加更多细节/编辑来支持我的论点。假设我有 2 个条件,我想同时检查这两个条件-
#define cond258 ((i==2) && (j==5) && (k==8))
#define cond369 ((i==3) && (j==6) && (k==9))
我可以创建 2 个函数 -
cond258(i, j, k) {
return (i==2) && (j==5) && (k==8);
}
cond369(i, j, k) {
return (i==3) && (j==6) && (k==9);
}
这对我来说似乎不是一个好方法。这两个函数都在做类似的事情,所以它们应该被转换为单个函数 -
cond(i, j, k, first, second, third) {
return (i==first) && (j==second) && (k==third);
}
但这使我的 if 条件不可读 -
if(cond(i, j, k, 2, 5, 8) || cond(i, j, k, 3, 6, 9))
所以如果我可以有一些别名,我可以简单地写成
if(cond258 || cond369)
【问题讨论】:
-
为什么要避免创建另一个函数?
-
这能回答你的问题吗? Can I have macros in Java source files
-
只需将方法添加到适当的类。写Java的时候不要尝试写C,结果会一团糟(反之亦然)。
-
@Steve ,我对原始问题添加了一些更新。希望这可以解释我的情况。
-
'这对我来说似乎不是一个好方法。两个函数都在做类似的事情,所以它们应该被转换为单个函数'——同样的推理如何不适用于宏?
if (cond258(i, j, k))怎么错了,if (cond258)突然OK了?
标签: java