gpt4 book ai didi

java - 有没有办法定义一个通用方法来检查 null 然后创建对象?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:02:27 26 4
gpt4 key购买 nike

我想编写一个方法来检查参数在哪里为空,如果是,则返回该类型的新对象。它看起来像:

public static <T> T checkNull(T obj) {
if (null == obj) return someHowCreateTheObjectWithTypeT();
else return obj;
}

经过一番努力和挖掘,我仍然找不到实现这一目标的方法,在 java 中是否真的可行?

我一开始想到了反射。但是当对象为 null 时,我无法获得 Class 实例,并且您无法创建没有类型 T 名称的 Class...

更新:

我考虑过将类作为参数传递,但这不是最佳解决方案,如以下答案所示:)

我当前的解决方案是使用默认值参数:

public static <T> T checkNull(T obj, T defaultValue) {
if (null == obj) return defaultValue;
return obj;
}

它比反射解决方案更快、更安全,而且同样冗长;但是我必须系统地为所有感兴趣的类型指定一个 DEFAULT_VALUE,这不是一件容易的工作。

最佳答案

这是不可能的。对于以这种方式工作的泛型,它必须在编译时捕获它将被调用的类型。但是,null 没有类型,因此您无法找出 T 来实例化它。

现在,您也可以通过传入 Class 实例来解决这个问题,但是您将需要使用反射进行一些相当稳健的错误处理,以确保类型 T 是一个具体类,并且具有一个您可以调用的公共(public)无参数构造函数.

关于java - 有没有办法定义一个通用方法来检查 null 然后创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com