Pourquoi l'autoboxing Java ne s'étend-il pas aux invocations de méthode des méthodes des types autoboxés ?

Je veux convertir une primitive en chaîne, et j'ai essayé :

myInt.toString();

Cela échoue avec l'erreur :

int cannot be dereferenced

Maintenant, je comprends que les primitives ne sont pas des types de référence (c'est-à-dire, pas un objet) et ne peuvent donc pas avoir de méthodes. Cependant, Java 5 a introduit l'autoboxing et l'unboxing (à la C

请先 登录 后评论

3 réponses

Patrick

Idem sur ce que Justin a dit, mais vous devriez faire ceci à la place :

Integer.toString(myInt);

Il enregistre une allocation ou deux et est plus lisible.

请先 登录 后评论
Mark Cidade

En C

请先 登录 后评论
erickson

La syntaxe valide la plus proche de votre exemple est

((Integer) myInt).toString();

Lorsque le compilateur se termine, cela équivaut à

Integer.valueOf(myInt).toString();

Cependant, cela ne fonctionne pas aussi bien que l'utilisation conventionnelle, String.valueOf(myInt), car, sauf dans des cas particuliers, il crée une nouvelle instance Integer, puis la supprime immédiatement, ce qui entraîne plus d'inutiles ordures. (Une petite plage d'entiers est mise en cache et l'accès par un accès au tableau.) Peut-être que les concepteurs de langages ont voulu décourager cette utilisation pour des raisons de performances.

Modifier : j'apprécierais que le ou les votants négatifs expliquent pourquoi cela n'est pas utile.

请先 登录 后评论
  • 5 abonnés
  • 0 favoris,426 Feuilleter
  • Mike Stone posée à 2023-03-17 15:49