web-dev-qa-db-fra.com

qu'est-ce que Ljava.lang.String; @

J'ai un tableau de chaînes selectCancel avec les méthodes setter et getter, qui est une case à cocher dans mon formulaire. J'essaie d'obtenir les valeurs vérifiées et j'obtiens le résultat ci-dessus lorsque j'imprime.

J'ai essayé la méthode Arrays.toString() mais elle affiche toujours la même chose.

J'ai ensuite fait ce qui suit:

String checked = Arrays.toString(Employee.getSelectCancel());

J'ai aussi essayé avec Arrays.asList() et Arrays.copyOf()

Alors, comment puis-je lire cette chaîne?

46
Srikanth Sridhar

La méthode fonctionne si vous fournissez un tableau. La sortie de

String[] helloWorld = {"Hello", "World"};
System.out.println(helloWorld);
System.out.println(Arrays.toString(helloWorld));

est

[Ljava.lang.String;@45a877
[Hello, World]

(le numéro après @ est presque toujours différent)

Merci de nous indiquer le type de retour de Employee.getSelectCancel()

64
Andreas_D

Ljava.lang.String;@ est renvoyé lorsque vous avez utilisé des tableaux de chaînes en tant que chaînes. Employee.getSelectCancel() ne semble pas renvoyer un String[]

19
anvarik

Selon les spécifications de la machine virtuelle Java (Java SE 8), JVM §4.3.2. Descripteurs de champ :

FieldType term | Type      | Interpretation
-------------- | --------- | --------------
L ClassName ;  | reference | an instance of class ClassName
[              | reference | one array dimension
...            | ...       | ...

l'expression [Ljava.lang.String;@45a877 signifie qu'il s'agit d'un tableau ([) de la classe Java.lang.String (Ljava.lang.String;). Et @45a877 est l'adresse où l'objet String est stocké en mémoire.

3
Mincong Huang

J'ai également rencontré ce problème lorsque j'ai créé l'application ListView pour Android:

Map<String, Object> m;

for(int i=0; i < dates.length; i++){
    m = new HashMap<String, Object>();
    m.put(ATTR_DATES, dates[i]);
    m.put(ATTR_SQUATS, squats[i]);
    m.put(ATTR_BP, benchpress[i]);
    m.put(ATTR_ROW, row[i]);
    data.add(m);
}

Le problème était que j'ai oublié d'utiliser l'index [i] dans la boucle

0
Leo240