如何在java中判断boolean equals为Boolean或long等于Long?

时间:2017-01-11 03:41:29

标签: java reflection return-type

我有两种方法,一种是void setA(Boolean a),另一种是// set method param type Class<?> paramType = m2.getParameterTypes()[0]; // get method return type Class<?> returnType = m1.getReturnType(); 我需要判断get方法返回类型是否等于set方法param类型来做某事。

{{1}}

我怎样判断这两种类型是否相等?

3 个答案:

答案 0 :(得分:3)

类型不相等。 booleanBoolean是不同的类型。

因此,如果你想在某些(反思)上下文中视为,那么你的应用程序的逻辑就必须处理它。

记录:

  • 可以通过booleanBoolean.TYPE获取boolean.class类型的运行时表示形式。

  • 可以通过BooleanBoolean.TRUE.getClass()获取Boolean.class类型的运行时表示形式。请注意案例中的差异!

  • 如果您反复查找方法或构造函数,则需要提供正确的参数类型。反射API(通常)不理解用于消除重载方法歧义的JLS规则。

  • 使用Method.invoke时,您需要传递一个boolean参数,其中包含Boolean

以上内容适用于所有原始类型及其各自的包装类型。

答案 1 :(得分:0)

判断如果类型相同,请致电equals()

if (returnType.equals(paramType)) {
    // Same type
} else {
    // Different type
}

在您的示例中,else子句将会执行,因为booleanBoolean的类型不同,即Boolean.class不等于Boolean.TYPE (表示基元类型的Class对象 boolean)。

答案 2 :(得分:-1)

你的意思是将布尔基元转换为布尔对象,不是吗? 要将原语转换为Object:

boolean bPrimitive = true;
Boolean bObject = Boolean.valueOf(bPrimitive);

将Object转换为基元:

bPrimitive = bObject.booleanValue();

希望得到这个帮助。

相关问题