[英]Java Program. Need to simplified public boolean equals (object B){ is to long. I do not how to reduce the coding in that part of my program
[英]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();
如何判斷這兩種類型相等?
類型不相等。 boolean
和Boolean
是不同的類型。
所以,如果你想要把他們當作平等的一些(反射)范圍內,那么你的應用程序的邏輯必須面對這一切。
作為記錄:
可以通過Boolean.TYPE
或boolean.class
獲得boolean
類型的運行時表示boolean.class
。
Boolean
類型的運行時表示形式可以通過Boolean.TRUE.getClass()
或Boolean.class
。 注意大小寫的不同!
如果您以反射方式查找方法或構造函數,則需要提供正確的參數類型。 反射API(通常)不了解用於消除重載方法歧義的JLS規則。
使用Method.invoke
,需要傳遞一個包裝為Boolean
的boolean
參數。
以上內容適用於所有原始類型及其各自的包裝器類型。
要判斷類型是否相等,請調用equals()
:
if (returnType.equals(paramType)) {
// Same type
} else {
// Different type
}
在您的示例中, else
子句將執行,因為boolean
和Boolean
不是同一類型,即Boolean.class
不等於Boolean.TYPE
(表示原始類型 boolean
的Class
對象)。
您的意思是將布爾原語轉換為布爾對象,不是嗎? 要將原語轉換為對象:
boolean bPrimitive = true;
Boolean bObject = Boolean.valueOf(bPrimitive);
要將Object轉換為基本類型:
bPrimitive = bObject.booleanValue();
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.