发布于2022-08-09 23:33 阅读(1185) 评论(0) 点赞(29) 收藏(3)
我有这行代码:
String msg = "What's the capital in " + nyttLista.get(slumpLand).land + "?";
.land
我想在和之间切换.stad
。我可以这样做而不必重复这行代码吗?
我尝试在“land”和“stad”之间创建一个String
切换:
String i = "land";
nyttLista.get(slumpLand).i;
我可以做类似的事情吗?
你有几个选择,每个都有自己的优点和缺点。
最简单且几乎可以肯定适合您的用例的是简单的“if”语句。
SomeObject obj = nyttLista.get(slumpLand);
String value;
if(<some condition>) {
value = obj.land;
} else {
value = obj.stad;
}
String msg = "What's the capital in " + value + "?";
如果是直截了当的,可读但有点冗长,如果你添加很多不同的条件,它会爆炸。
您可以使用三元运算符使其更短:
SomeObject obj = nyttLista.get(slumpLand);
String msg = "What's the capital in " + (<some condition> ? obj.land : obj.stad) + "?";
但是以可读性和可扩展性为代价(后者可能对您来说并不重要)。
您可以使用反射:
String fieldToUse = <some logic to return "land" or "stad".
Field field = SomeObj.class.getField(fieldToUse);
SomeObject obj = nyttLista.get(slumpLand);
"What's the capital in " + field.get(obj).toString() + "?";
在这个用例中我不会这样做,但是当你有 TEH DYNAMICS 时它会很有用(这非常罕见,你可以忽略这个选项)。
如果使用 Java 8,您可以使用函数和其他有趣的东西(或策略模式)。但真的只为lolz。
Function<SomeObject, String> using;
if(<some condition>) {
using = (a) => a.land;
} else {
using = (a) => a.stad;
}
"What's the capital in " + using.apply(nyttLista.get(slumpLand)) + "?";
当您有很多不同的选项或者您想要传递部分算法时,它很有用。
您可以使用规则引擎,但我们在反思时变得愚蠢。当您有大量规则时很好,但在上述问题中毫无意义。
你可以把逻辑推高。所以SomeObject
有一个getThingie
方法知道什么时候返回land
or stad
。在内部,它将使用上述之一来实现,但调用者不需要关心。我不知道决定land
or所需的逻辑stad
,但这可能是我推荐的逻辑,它使用if
语句在内部实现。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/473281/6fc6b816d9ae136a335c/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!