Pouvez-vous me dire s'il est possible de surcharger les opérateurs en Java ? Si cela est utilisé quelque part en Java, pouvez-vous m'en parler ?
Vous dites que nous ne pouvons pas créer de wrapper en java ? Comme SmallInteger comme Integer ?
Pouvez-vous me dire s'il est possible de surcharger les opérateurs en Java ? Si cela est utilisé quelque part en Java, pouvez-vous m'en parler ?
Non, Java ne prend pas en charge la surcharge des opérateurs définis par l'utilisateur. Le seul aspect de Java qui se rapproche d'une surcharge d'opérateur "personnalisée" est la gestion de + pour les chaînes de caractères, qui résulte soit en une concaténation de constantes au moment de la compilation, soit en une concaténation au moment de l'exécution à l'aide de StringBuilder/StringBuffer. Vous ne pouvez pas définir vos propres opérateurs qui agissent de la même manière.
Pour un langage de type Java (et basé sur la JVM) qui hace supportent la surcharge d'opérateur, vous pourriez regarder dans Kotlin o Groovy . Vous pourriez aussi avoir de la chance avec un Solution de plugin pour compilateur Java .
Vous dites que nous ne pouvons pas créer de wrapper en java ? Comme SmallInteger comme Integer ?
@turulbüyükk : Il existe déjà des wrappers pour tous les types primitifs existants - mais si vous vouliez créer votre propre nouveau type de wrapper, vous ne seriez pas en mesure de le faire se comporter comme les autres, car ils ont un support spécifique dans le langage.
Merci, j'ai cherché sur Google et je n'ai rien trouvé. Je voulais savoir si je pouvais faire une variable complexe composée de deux primitives (un double et un int--->bonne précision+bonne portée)
En plus de toutes les personnes qui soulignent que +
est surchargé pour les chaînes de caractères, -
est également surchargé pour les opérations en virgule flottante et en nombre entier, tout comme le sont *
y /
.
[modifier] %
est également surchargé pour la virgule flottante, ce qui peut être un peu surprenant pour ceux qui ont des connaissances en C ou C++.
Java ne permet pas la surcharge des opérateurs. L'approche préférée est de définir une méthode sur votre classe pour effectuer l'action : a.add(b)
au lieu de a + b
. Vous pouvez voir un résumé des autres éléments que Java a laissé de côté par rapport aux langages de type C ici : Fonctions supprimées de C et C++
L'important est l'objectif de conception qui consiste à rendre les fichiers sources Java indépendants du contexte. Essayer de lire des programmes C très volumineux (MLOC) et lourds en macro a une courbe d'apprentissage très longue. Il n'est pas plus difficile de se plonger dans un programme Java comparable (ou plus grand) que dans un petit programme Java. Comme l'a dit Gosling : Un langage dans lequel les programmeurs en cols bleus peuvent travailler. [Et tous ceux qui pensent que la verbosité du langage passe-partout est préjudiciable devraient se renseigner sur le chunking dans la cognition experte].
Il existe de nombreux autres exemples de surcharge d'opérateurs en Java. Par exemple &
, |
y ^
sont surchargés pour boolean
et les types intégraux. Et en effet, les opérateurs arithmétiques et relationnels sont surchargés pour divers types numériques. (Bien sûr, la sémantique des surcharges est beaucoup plus proche ...)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Duplicata possible de Pourquoi Java ne propose-t-il pas de surcharge d'opérateurs ?