首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中,如何判断布尔值等于布尔值还是长值?

在java中,如何判断布尔值等于布尔值还是长值?
EN

Stack Overflow用户
提问于 2017-01-11 03:41:28
回答 3查看 972关注 0票数 0

我有两个方法,一个是boolean getA(),另一个是void setA(Boolean a)

我需要判断get方法返回类型等于set方法param类型来做某事。

代码语言:javascript
复制
// set method param type
Class<?> paramType = m2.getParameterTypes()[0];
// get method return type
Class<?> returnType = m1.getReturnType();

我怎么能判断这两种类型相等?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-11 03:55:07

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

因此,如果您想在某些(反射)上下文中将它们视为相等,则应用程序的逻辑必须处理这个问题。

请记录在案:

  • 类型boolean的运行时表示可以通过Boolean.TYPEboolean.class获得。
  • 类型Boolean的运行时表示可以通过Boolean.TRUE.getClass()Boolean.class获得。请注意以防万一的差异!
  • 如果以反射方式查找方法或构造函数,则需要提供正确的参数类型。反射API(通常)不理解消除重载方法歧义的JLS规则。
  • 使用Method.invoke时,需要传递包装为Booleanboolean参数。

上述内容适用于所有原语类型及其各自的包装器类型。

票数 3
EN

Stack Overflow用户

发布于 2017-01-11 04:03:30

若要判断类型是否相等,请调用equals()

代码语言:javascript
复制
if (returnType.equals(paramType)) {
    // Same type
} else {
    // Different type
}

在您的示例中,将执行else子句,因为booleanBoolean不是相同的类型,也就是说Boolean.class不等于Boolean.TYPE (表示基本类型booleanClass对象)。

票数 0
EN

Stack Overflow用户

发布于 2017-01-11 03:55:14

你的意思是把布尔原语转换成布尔对象,不是吗?若要将原语转换为对象:

代码语言:javascript
复制
boolean bPrimitive = true;
Boolean bObject = Boolean.valueOf(bPrimitive);

将对象转换为原语:

代码语言:javascript
复制
bPrimitive = bObject.booleanValue();

希望能帮上忙。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41582307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档