当前位置: 首页 > 知识库问答 >
问题:

知道类中的所有变量是否为空的最佳方法是什么?

燕照
2023-03-14

这意味着该类已初始化,但未设置变量。

示例类:

public class User {

    String id = null;
    String name = null;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

实际的类非常大,我不想检查每个变量是否(xyz==null)。

共有3个答案

尉迟边浩
2023-03-14

使用Lombok生成的equals对象和静态空对象可以非常轻松地完成此操作:

import lombok.Data;

public class EmptyCheck {
    public static void main(String[] args) {
        User user1 = new User();

        User user2 = new User();
        user2.setName("name");

        System.out.println(user1.isEmpty()); // prints true
        System.out.println(user2.isEmpty()); // prints false
    }

    @Data
    public static class User {
        private static final User EMPTY = new User();

        private String id;
        private String name;
        private int age;

        public boolean isEmpty() {
            return this.equals(EMPTY);
        }
    }
}

先决条件:

  • 默认构造函数不应使用自定义行为实现,因为自定义行为用于创建空对象
  • 类的所有字段都应该有一个实现的等于(内置Java类型通常不是问题,对于自定义类型,可以使用Lombok)

优势:

  • 不涉及任何反思

芮歌者
2023-03-14

试试这样的东西:

public boolean checkNull() throws IllegalAccessException {
    for (Field f : getClass().getDeclaredFields())
        if (f.get(this) != null)
            return false;
    return true;            
}

虽然如果可行的话,最好检查每个变量。

聂溪叠
2023-03-14

Java8的另一个非反射的解决方案,在paxadio的答案行中,但不使用一系列if,将是流式传输所有字段并检查nullness:

return Stream.of(id, name)
        .allMatch(Objects::isNull);

在避免反射锤的同时,这仍然很容易维护。

 类似资料:
  • 问题内容: 这将意味着该类已初始化,但未设置变量。 示例类: 实际的类很大,我不想为每个变量检查​​if(xyz == null)。 问题答案: 尝试这样的事情: 尽管检查每个变量是否可行可能会更好。

  • 问题内容: 我有一个游标,带有来自选择的值,我想根据我是否发现任何行来做点什么。 这似乎不起作用,有帮助吗? 问题答案: 您需要在使用%FOUND属性之前对游标执行FETCH。将您的代码更改为类似 请注意,您可能需要将变量添加到FETCH语句的INTO子句中,在TABLE1和TABLE2中的每一列都需要添加一个变量。还要注意,编写此游标的方式可能会获得比预期更多的返回行。因为没有指定连接条件,所以

  • 问题内容: 我正在制定一个将函数用作范围参数()的指令。我需要知道该方法返回的结果是否为有角度的承诺(如果是,则在分辨率上会发生某些情况,否则会立即发生)。 现在,我正在测试是否存在,但是我想知道是否有更好的方法可以做到这一点。 问题答案: 您可以使用将对象包装为一个承诺(无论是否存在)。然后,您可以确定自己始终在兑现承诺。这应该简化随后处理结果的代码。 文档是在这里与$ Q。

  • 相对来说,我是java的业余爱好者,一直使用类和对象调用静态变量和方法。当它们是静态的时,类和对象都可以使用它们。 为什么程序员不对类变量和方法都保持默认的静态?

  • 本文向大家介绍在JavaScript中声明多个变量的最佳方法是什么?,包括了在JavaScript中声明多个变量的最佳方法是什么?的使用技巧和注意事项,需要的朋友参考一下 当然,以下声明多个变量的方法更有效: 假设您需要添加,删除或更新变量,则可以轻松实现。 但是使用以下方法,您需要做更多更改。例如,在删除变量时,您需要删除分号。如果是第一个,则需要将var添加到第二个变量。

  • 问题内容: 目前,我在隐藏的输入字段中回显某些变量,并在需要时使用Javascript读取它们。 我和一个同事现在正在考虑使用PHP生成一个额外的Javascript文件,该文件仅包含Javascript的所有变量。这样,变量已经存在,HTML中没有多余的代码。 有什么好的方法可以将变量从PHP传递到Javascript?我们的解决方案听起来如何? 问题答案: 通用数据传递 JavaScript常