en syntaxe Java, Class

Class

Voici mon interprétation, c’est le modèle de classe mais la classe? signifie que le nom de la classe est indéterminé et étend la classe Something.

S’il y a quelque chose qui ne va pas dans mon interprétation, faites le moi savoir.

Vous avez presque raison. Fondamentalement, Java n’a pas de concept de modèle (C ++ a). Cela s’appelle les génériques. Et cela définit une classe générique Class<> avec l’atsortingbut des génériques étant n’importe quelle sous-classe de Something .

Je suggère de lire ” Quelles sont les différences entre les types” génériques “en C ++ et Java? ” Si vous voulez faire la différence entre les modèles et les génériques.

Il y a quelques réponses déroutantes ici donc je vais essayer de clarifier cela. Vous définissez un générique en tant que tel:

 public class Foo { private T t; public void setValue(T t) { this.t = t; } public T getValue() { return t; } } 

Si vous voulez qu’un générique sur Foo étende toujours une classe Bar, vous le déclareriez comme tel:

 public class Foo { private T t; public void setValue(T t) { this.t = t; } public T getValue() { return t; } } 

Le ? est utilisé lorsque vous déclarez une variable.

 Foofoo = getFoo(); 

OU

 DoSomething(List listOfBarObjects) { //internals } 

Tu as raison

La définition est que la classe doit être un sous-type de quelque chose

C’est la même chose que la Class , mais il y a une condition que T doit extends Something ou implements Something comme suggéré par Anthony Accioly

Il peut aussi être classe Something soi

Tu as raison.

En Java génériques, le ? opérateur signifie “toute classe”. Le mot extends clé extend peut être utilisé pour qualifier cela “toute classe qui étend / implémente Something (ou est Something ).

Ainsi, vous avez “la Class d’une classe, mais cette classe doit être ou étendre / implémenter Something “.

Tu as raison.

Cependant, vous voudrez généralement nommer la classe qui étend quelque chose et écrire par exemple . Si vous utilisez ? vous ne pouvez plus rien faire avec le type donné plus tard.