Je lisais JavaSE 6 specs, puis j'ai fait un test pour résoudre certains doutes.Lorsque les types de référence sont les mêmes - Array
Deux types de référence sont le même type d'exécution si:
- Ils sont à la fois classe ou les deux types d'interface, sont définis par le même chargeur de classe, et ont le même nom binaire (§13.1), en Dans ce cas, on dit parfois qu'il s'agit de la même classe d'exécution ou de la même interface d'exécution.
- Ce sont les deux types de tableaux et leurs types de composants sont du même type d'exécution(§10).
L'exécution du code ci-dessous ...
public class Test {
public static void main(String[] args) {
String str = "" + new String(" ");
String[] strArr = {str};
String[] strArr2 = {str};
System.out.println("strArr == strArr2 : " + (strArr == strArr2));
}
}
... Je me attendais à la sortie suivante:
strArr == strArr2 : true
Mais la sortie actuelle est:
strArr == strArr2 : false
Qu'est-ce qui me manque?
Pour votre code, le JLS seulement que 'strArr.getClass() == strArr2. getClass() '. – dhke
Mélangez-vous des types et des variables? Le spex parle des types et votre exemple concerne les instances. Vérifiez le commentaire ci-dessus par @dhke. –