Question

Dans Java 1.4.2 , classe java.math.BigInteger implémente les interfaces Comparable , Serializable .

Dans Java 1.5.0 , classe java .math.BigInteger implémente les interfaces Serializable , Comparable < BigInteger > .

Ceci est juste un exemple pour m'aider à poser des questions sur < et > . Ce que je me demande vraiment, ce sont les éléments < et > .

Ma question est triple:

  • que signifie la partie < BigInteger > de l'instruction implémente ?
  • comment appelle-t-on cette syntaxe?
  • et que fait-il?

PS: il est très difficile de rechercher Google pour < et > et impossible de rechercher un fournisseur de services pour < et > ; en premier lieu.

Merci!

Était-ce utile?

La solution

Lisez le Didacticiel sur les génériques Java . Ce qui se trouve entre les chevrons est un paramètre de type. Comparable est une classe générique. Dans ce cas, les chevrons signifient que la classe est comparable aux autres BigIntegers.

Pour plus de précisions dans ce cas, consultez le Javadocs pour Comparable dans 1.5. Notez qu'elle est déclarée comme Comparable < T > et que la méthode compareTo utilise un argument de type T . Le T est un paramètre de type qui est "rempli". quand l'interface est utilisée. Ainsi, dans ce cas, déclarer que vous implémentez Comparable < BigInteger > implique que vous devez disposer d'une méthode compareTo (BigInteger o) . Une autre classe pourrait implémenter Comparable < String > , ce qui signifie qu'elle devrait implémenter une méthode compareTo (String o) .

J'espère que vous pourrez constater les avantages de l'extrait ci-dessus. En 1.4, la signature de compareTo ne pouvait prendre qu'un objet Object car toutes sortes de classes implémentaient Comparable et il était impossible de savoir exactement ce qui était nécessaire. Avec les génériques, cependant, vous pouvez spécifier que vous êtes comparable en ce qui concerne une classe particulière, puis écrire une méthode de comparaison plus spécifique qui prend uniquement cette classe en tant que paramètre.

Les avantages ici sont doubles. Tout d'abord, vous n'avez pas besoin d'effectuer une vérification instanceof et un transtypage dans l'implémentation de votre méthode. Deuxièmement, le compilateur peut effectuer beaucoup plus de vérification de type au moment de la compilation - vous ne pouvez pas accidentellement passer une chaîne de caractères à quelque chose qui implémente Comparable < BigInteger > , car les types ne correspondent pas. Il est bien mieux que le compilateur puisse vous le signaler, plutôt que de provoquer une exception d'exécution comme cela aurait été le cas avec du code non générique.

Autres conseils

Je suis presque sûr qu'il s'agit de génériques

http://java.sun.com /j2se/1.5.0/docs/guide/language/generics.html

J'ai demandé quelque chose de similaire (C #): il contient des informations utiles Que fait la méthode < ClassName > moyen?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top