java - 检查不同对象的空值

标签 java object if-statement null

这可能是一个非常愚蠢的问题,但我不知道如何解决这个问题。

int num;
String str;
float flt;

我定义了三个变量,一个int,一个String,一个float。比我执行以下操作:

Object a = num;
Object b = str;
Object c = flt;

如何检查 a、b 或 c 对象的默认值?我知道 Stringnullint00.0对于float,但是有没有办法做一些事情:

if(a==nullValue(a) && b==nullValue(b) && c==nullValue(c))

因此它等于:

if(a==0 && b==null && c==0.0)

我只是得到了传递的三个 a、b、c 对象,所以我不知道它们是什么类型。

最佳答案

Java 是一种强类型语言,您试图击败而不是利用它的核心优势之一。

从技术上讲,您可以实现您想要的,通常您必须针对所有可能的原始类型+ null 测试您的Object obj(因为您不知道这个对象真正是什么是):

     static boolean isDefaultValue(Object obj) {

        if (obj == null // non-primitive
                || obj.equals((byte) 0) // default for byte
                || obj.equals((short) 0) // short
                || obj.equals((int) 0) // int
                || obj.equals(0L) // long
                || obj.equals(0.0f) // float 
                || obj.equals(0.0d) // double
                || obj.equals('\u0000') // char 
                || obj.equals(false)) { // boolean

            return true;
        }
        return false;
    }

但是,我真的鼓励您修改您的设计,并问自己为什么通过将所有内容强制转换为 Object 来完全删除数据类型,而不是这样做。这可能会导致不可读且高度危险的代码。

说出您的原因,我们可能会帮助您找到更好的解决方案。

关于java - 检查不同对象的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22922751/

相关文章:

Java多态性如何为子类对象调用父类(super class)方法

java - 使用 SVG Salamander 进行 SVG 动画 (Java 1.8)

c# - 将元素添加到 null(空)List<T> 属性

javascript - 我如何使用 JavaScript 或 jQuery 重建这个 JSON 对象

具有多个条件的 Bash if 语句抛出错误

java跳过if else语句

java - 在非默认类加载器下运行本地集群

java - 如何将 jasper 报表查看器添加到滚动面板?

javascript - 如果我不知道索引,如何循环遍历二维数组

C++ if 后跟一个 for 循环 block