2017-12-18 277 views
-5
if (responseEntity.getBody().getMeta().getCode() != ApiExceptionEnum.SUCCESS.code()) { 
    return null; 
} 

這樣的代碼,爲什麼1!= 1返回true?

responseEntity.getBody().getMeta().getCode() -> Integer 1 
ApiExceptionEnum.SUCCESS.code() -> Integer 1 

有時它會返回null!

爲什麼?

的響應是從redis的

+2

使用'equals'來比較對象而不是'=='或'!=' – Jens

+0

出於同樣的原因'新Integer(1)== Integer.valueOf(1)'是'false'。 –

+0

謝謝,最後我用Integer.intValue,但是爲什麼當Integer = 1時,這樣的代碼'Integer!= Integer'返回true? –

回答

0

在這種情況下==!=檢查是否比較的對象是指向存儲器中的同一個地方。要比較存儲在比較對象中的值,請使用由Object類的所有Java對象繼承的方法.equals()

+0

當Interger是1時,爲什麼它不會aotuunboxing? –

+0

@JasonYu因爲equals()方法被對象繼承,所以原始類型不被視爲Java中的對象,它們不會繼承任何東西。如果你調用這個方法,這意味着你想比較對象,而不是原始類型 –

相關問題