Java泛型

Java泛型,java,generics,Java,Generics,有没有可能制作一个可以接受任何东西的方法,包括对象、整数等?我有一个检查值是否为null的方法,我想也许可以用泛型而不是重载来完成。不幸的是,尝试 nullChecking(Class<? extends Object> value){ ... } nullChecking(Class你能不能只做nullChecking(Object value)?如果你只想测试它是否为null,它就会工作。你能不能只做nullChecking(Object value)?如果您只想测试它是否为空

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

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

nullChecking(Class你能不能只做
nullChecking(Object value)
?如果你只想测试它是否为null,它就会工作。

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

我不确定您想做什么…如果它只是检查对象是否为空,那么您可以简单地执行以下操作:

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

我不确定您想做什么…如果只是检查对象是否为
null
,那么您可以简单地执行以下操作:

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

实际上有一种方法可以做到这一点,但我不推荐你使用它

所以,这里是如何做到这一点(警告,它绕过了编译时类型检查,所以您可以打开自己的运行时类强制转换异常…)

假设您有一个可以返回多个类型的“getter”——它可以声明为泛型类型,如下所示:

public <X> X get(String propertyName) { ... }
publicxget(stringpropertyname){…}
您可以对“setter”执行相同的操作:

public <X> void set(String property, X value) { ... }
公共无效集(字符串属性,X值){…}

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

所以,这里是如何做到这一点(警告,它绕过了编译时类型检查,所以您可以打开自己的运行时类强制转换异常…)

假设您有一个可以返回多个类型的“getter”——它可以声明为泛型类型,如下所示:

public <X> X get(String propertyName) { ... }
publicxget(stringpropertyname){…}
您可以对“setter”执行相同的操作:

public <X> void set(String property, X value) { ... }
公共无效集(字符串属性,X值){…}
A

写起来比写起来容易

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

考虑一下,在第一种情况下,您将执行一个方法调用,对我来说,它消耗[几乎什么都没有,但确实消耗]系统资源,没有任何逻辑优势。

a

写起来比写起来容易

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


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

由于Java 1.7,您可以使用以下方法:

public static T requirennull(T obj)
公共静态T requirennull(T对象,字符串消息)
公共静态T requirennull(T对象,供应商消息供应商)

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

由于Java 1.7,您可以使用以下方法:

public static T requirennull(T obj)
公共静态T requirennull(T对象,字符串消息)
公共静态T requirennull(T对象,供应商消息供应商)

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

拍额头我今天刚听了一大堆关于泛型的东西,所以我想我默认了这种想法。谢谢:)谢谢:)这对int、char、long等不起作用。但是这些不能为null,所以没有真正的问题。@醋@Bishiboosh:会起作用的。它们将被自动装箱成整数、字符。。。因此总是返回false…是的,但无论如何测试它们都是无用的,因为它们不能为空。我今天刚刚听了一大堆关于泛型的东西,所以我想我默认了这种想法。谢谢:)谢谢。它对int、char、long等都不起作用。但是这些不能为null,所以没有真正的问题。@醋@Bishiboosh:它会起作用的。它们将被自动装箱成整数、字符。。。因此总是返回false…是的,但无论如何测试它们都是无用的,因为它们不能为null。(注意:Integer扩展Number;Number扩展Object;extends本质上是可传递的。)实际上,这不会接受整数,因为它们不扩展类…(注意:Integer扩展Number;Number扩展Object;extends本质上是可传递的。)实际上,这不接受整数,因为它们不扩展类…是的,我正在做类似的事情,如果它为null,它只会抛出一个错误,所以它不会返回任何东西,在这种情况下,对象符合要求。Cheers@starblue:我希望“EnsureRenonBlue()”执行类似“if(obj==null)抛出新的NullPointerException()”或类似的操作。我不希望它只是返回一些值……是的,我正在做类似的事情,如果它为null,它只是抛出一个错误,所以它不会返回任何东西,在这种情况下,对象符合条件。Cheers@starblue:我希望“EnsureRenonBlue()”执行类似“if(obj==null)抛出新的NullPointerException()”或类似的操作。我不希望它只是返回一些值。。。