[英]Java boolean parameter changes its value w/o any assignment
今天我有一個非常尷尬的經歷。 我只是這樣調用Push.payload()方法。
Push.payload(payload, keystore, password, production, token);
(實際上,此代碼段是javaPNS的一部分),而Push.payload()只是
public static PushedNotifications payload(Payload payload, Object keystore, String password, boolean production, Object devices) throws CommunicationException, KeystoreException {
return sendPayload(payload, keystore, password, production, devices);
}
當我調用Push.payload()時,生產價值為true,除聲明外沒有任何賦值。
private static final boolean production = true;
當然,在調試模式下進入Push.payload()之前,我檢查了其值是否為true。 但是,在Push.payload()方法中,生產值變為false!
我不知道發生了什么 請解釋為什么生產價值變為假。
提前致謝。
如果你打電話
Push.payload(payload, keystore, password, false, token);
那么在方法調用中production
將為假。
如果此值為常數,為什么要將其作為參數傳遞? 如果您無法刪除它,建議您使用其他名稱,例如Use Java Code Convention。
private static final boolean PRODUCTION = true;
實際上,您在調試模塊中看到的“生產”變量是方法“ Push.payload()”的參數。 如果靜態變量的名稱與方法中參數的名稱相同。 jvm將其作為方法優先級的參數。 因此,我建議您使用“ PRODUCTION”之類的大寫字母。 並且您最好使用Xxxxx.PRODUCTION
這種樣式更適合閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.