java - 如何避免大量 if-else 语句

标签 java

我有一堂这样的课..

Class A {

    public void someNullCheckingMethod(Student stu) {

        if (stu.getName() != null) {
            String name = stu.getName();
        } else {
                // get name from other source(its something like 
                // fallback)
               }

        if (stu.getId() != null) {
            String id = stu.getId();
        } else {
                // get id from other source(its something like 
                // fallback)
               }

        if (stu.getAddress() != null) {
            String address = stu.getAddress();
        } else {
                // get address from other source(its something like 
                // fallback)
               }

        if (stu.getCity() != null) {
            String city = stu.getCity();
        } else {
                // get city from other source(its something like 
                // fallback)
               }

        if (stu.getGender() != null) {
            String gender = stu.getGender();
        } else {
                // get gender from other source(its something like 
                // fallback))
               }
    }
}

有没有办法避免太多的 if 语句?正如您在这里看到的,我正在检查每个属性的 null 条件,但我不希望进行多次检查来获得所需的结果,只是想减少 if 条件,并希望通过放置所有这些 if 条件获得相同的所需结果.

最佳答案

由于您没有提供任何上下文,因此您可以根据一些假设执行一些操作。

假设一:
如果值初始化为 null

String name;
// or
String name = null;

然后您可以只分配值并忽略字段是否为空,因为类成员已经为空。

String name = stu.getName(); // String name = "Some Name" OR null, depending on return value of method

假设二:
如果您只是想避免 if 语句,您可以使用三元运算符

String name = stu.getName() != null ? stu.getName() : null; // Or some other default value

我还想到了其他一些方法,但如果没有更多上下文,它们在这一点上有点无用。

关于java - 如何避免大量 if-else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983396/

相关文章:

java - 从包含特殊字符的 url 下载图像

Java 1.6 JSSE 默认 SSL session 超时?

java - 如何从 java.sql.Timestamp 转换为 java.util.Date?

java - 在java中自动计算圈复杂度的工具?

java - 查找给定范围内的史密斯数

java - 将数组列表发送回父 Activity

java - Apache Tomcat 上的应用程序抛出 HTTP 405 错误

java - 在 Android Studio 中下载用于 HTTPs 的自签名证书

java - 类路径中的 Ant-JUnit 错误 : Ant wants the JUnit . jar

java - 为什么 Java 反射调用比方法调用快?