java - 如何批量检查多个变量的空字符串?

标签 java

我有这种类型的代码:

HashMap out = new HashMap();
if(!StringUtils.isEmpty(foo.a)) {
    out.put(A.A_NAME, foo.a);
}
if(!StringUtils.isEmpty(foo.b)) {
    out.put(B.B_NAME, foo.b);
}
if(!StringUtils.isEmpty(foo.c)) {
    out.put(C.C_NAME, foo.c);
}
//... many continues here

有没有更快的方法来编写所有这些代码?

最佳答案

Is there a faster way of doing this?

就性能而言,没有。 (或者至少......改进的范围可能不值得担心。)

就代码行数和可读性而言,您可以通过编写和使用如下方法来重构代码:

private void addIfNonempty(HashMap map, String name, String value) {
    if (!StringUtils.isEmpty(value)) {
        map.put(name, value);
    }
}

addIfNonempty(out, A.A_NAME, foo.a);
addIfNonempty(out, B.B_NAME, foo.b);
// etcetera

您还可以使用反射来实现这一点。根据识别要“添加”的字段的标准,这可以减少(或消除)重复的代码。但性能可能会慢一个数量级,并且代码可能很脆弱;例如如果添加或删除字段...或者“模式”被破坏。


Is there a faster way of writing all these code?

这实际上取决于“重复性”的具体细节......以及您的 IDE/编辑器技能。例如,如果您的 IDE 支持 emacs 键盘宏之类的功能,您可以有效地从字段名称生成源代码。如果您擅长于此,那么您可能会比编写和测试反射版本所需的时间更少。

关于java - 如何批量检查多个变量的空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369061/

相关文章:

java - OpenIMAJ人脸识别中的rfaces.get(0).getSecondObject()总是返回null

java - Firebase - 电子邮件地址已被另一个帐户使用

java - 关于单例属性的问题

java - 在Ubuntu 14.04 hadoop 2.6版的单节点群集设置中运行hadoop程序

java - 如何比较字符串?

java - Sqlite:带条件的嵌套选择

java - 如何根据用户输入从java中的链表中删除特定元素?

java - 将 trim 方法添加到 Lombok 中的 setter

JavaMail 文件夹 search() 方法返回具有唯一 MessageID 的多条消息

java - 将 PDFBox 中的行附加到现有页面时坐标错误