簡體   English   中英

如何在Java中判斷布爾值等於布爾值還是long等於Long?

[英]How to judge boolean equals to Boolean or long equals to Long in java?

我有兩種方法,一種是boolean getA() ,另一種是void setA(Boolean a)
我需要判斷get方法的返回類型等於set方法的param類型來做某事。

// set method param type
Class<?> paramType = m2.getParameterTypes()[0];
// get method return type
Class<?> returnType = m1.getReturnType();

如何判斷這兩種類型相等?

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

所以,如果你想要他們當作平等的一些(反射)范圍內,那么你的應用程序的邏輯必須面對這一切。

作為記錄:

  • 可以通過Boolean.TYPEboolean.class獲得boolean類型的運行時表示boolean.class

  • Boolean類型的運行時表示形式可以通過Boolean.TRUE.getClass()Boolean.class 注意大小寫的不同!

  • 如果您以反射方式查找方法或構造函數,則需要提供正確的參數類型。 反射API(通常)不了解用於消除重載方法歧義的JLS規則。

  • 使用Method.invoke ,需要傳遞一個包裝為Booleanboolean參數。

以上內容適用於所有原始類型及其各自的包裝器類型。

判斷類型是否相等,請調用equals()

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

在您的示例中, else子句將執行,因為booleanBoolean不是同一類型,即Boolean.class不等於Boolean.TYPE (表示原始類型 booleanClass對象)。

您的意思是將布爾原語轉換為布爾對象,不是嗎? 要將原語轉換為對象:

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

要將Object轉換為基本類型:

bPrimitive = bObject.booleanValue();

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM