繁体   English   中英

Java泛型

[英]Java generics

是否有可能制造出一种可以接受任何东西的方法,包括对象,整数等? 我有一个检查该值是否为null的方法,我在想也许可以使用泛型而不是重载来完成。 不幸的是,尝试

nullChecking(Class<? extends Object> value){
...
}

不允许整数,因为它们扩展Number not object。 有办法吗?

干杯

你不能只做nullChecking(Object value)吗? 如果您只想测试它是否为null,它将起作用。

我不确定您要做什么...如果只是检查对象是否为null则可以执行以下操作:

public static boolean nullChecking(Object obj) {
    return obj == null;
}

从Java 1.7开始,您可以使用java.util.Objects的方法:

public static <T> T requireNonNull(T obj)
public static <T> T requireNonNull(T obj, String message)
public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)

或者只是检查他们的代码。

其实有一种方法可以做到这一点,但是我不建议您使用它。

因此,这是执行此操作的方法(警告,它避免了编译时类型检查,因此您可以接受运行时类广播异常...)

假设您有一个“ getter”,它可以返回多个类型-可以将其声明为通用类型,如下所示:

public <X> X get(String propertyName) { ... }

您可以对“设置者”执行相同的操作:

public <X> void set(String property, X value) { ... }

一种

public <T> boolean isNull(T obj) { return obj == null; } 

会工作...但是...为什么呢?

你认为

if (isNull(myObj)) { ... }

比写容易

if (myObj == null) { .... }

考虑到您将在第一种情况下进行方法调用,这对我来说几乎不消耗任何资源,但确实消耗了系统资源,而没有逻辑上的优势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM