Que signifie Class En Java?

question comme ci-dessus, désolé c’est probablement un doublon mais je n’ai pas pu trouver un exemple avec le à la fin.

Pourquoi ne pas simplement utiliser Class comme paramètre?

Class est une classe paramétrable, vous pouvez donc utiliser la syntaxe Class où T est un type. En écrivant Class , Vous déclarez un object Class qui peut être de n’importe quel type ( ? Est un joker). Le type de Class est un type qui contient des méta-informations sur une classe.

Il est toujours recommandé de se référer à un type générique en spécifiant son type spécifique, en utilisant Class Vous respectez cette pratique (vous connaissez la Class comme étant paramétrable), mais vous ne limitez pas votre paramètre à type spécifique.

Référence sur les génériques et les caractères génériques: http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html

Référence sur l’object et la reflection de classe (fonctionnalité du langage Java utilisé pour introspection): http://java.sun.com/developer/technicalArticles/ALT/Reflection/

Ceci est une bête. Cela conduit souvent à la confusion et aux erreurs, car, lorsque vous le voyez en premier, vous commencez à croire, Est un caractère générique pour tout type Java . Ce qui est .. pas vrai. est le type inconnu , une différence légère et méchante.

Ce n’est pas un problème lorsque vous l’utilisez avec Class . Les deux lignes fonctionnent et comstacknt:

 Class anyType = Ssortingng.class; Class  theUnknownType = Ssortingng.class; 

Mais – si nous commençons à l’utiliser avec des collections, alors nous voyons des erreurs de compilation inhabituelles:

 List list = new ArrayList(); // ArrayList is not allowed list.add("a Ssortingng"); // doesn't comstack ... 

Notre List N’est pas une collection adaptée à tout type d’object. Il ne peut stocker qu’un seul type: le “type inconnu” mystique. Ce qui n’est pas un vrai type, c’est certain.

Cela signifie que votre référence de classe peut contenir une référence à tout object Class.

C’est fondamentalement la même chose que “Class” mais vous montrez à d’autres personnes qui lisent votre code que vous n’avez pas oublié les génériques, vous voulez juste une référence pouvant contenir n’importe quel object Class.

Bruce Eckel, Pensée en Java:

Dans Java SE5, Class Est préférable à Plain Class, même si elles sont équivalentes et que la classe Plain, comme vous l’avez vu, ne génère pas d’avertissement du compilateur. L’avantage de Class Est qu’il indique que vous n’utilisez pas simplement une référence de classe non spécifique par accident ou par ignorance. Vous avez choisi la version non spécifique.

C’est un littéral générique . Cela signifie que vous ne connaissez pas le type de classe que cette instance de Class représente, mais vous utilisez toujours la version générique.

  • Si vous connaissiez la classe, vous utiliseriez Class . De cette façon, vous pouvez créer une nouvelle instance, par exemple, sans lancer: Foo foo = clazz.newInstance();
  • Si vous n’utilisez pas du tout de génériques, vous aurez au moins un avertissement (et le fait de ne pas utiliser de génériques est généralement déconseillé, car cela peut entraîner des effets secondaires difficiles à détecter).

Dans les génériques, un type inconnu est représenté par le caractère générique “?”. Lisez ici pour exemple officiel.

Cela signifie une classe avec un type de tout (inconnu).

Vous devriez lire le tutoriel java generics pour mieux comprendre