Oui, Foo.class
en Java est équivalent à typeof(Foo)
en C#. Voir section 15.8.2 of the JLS pour plus d'informations sur littéraux de classe.
Il est pas la même chose que d'appeler GetType()
sur une référence, qui obtient le type de temps d'exécution d'un objet. L'équivalent Java de cela est someReference.getClass()
.
L'une des raisons pour lesquelles vous le voyez plus souvent en code Java qu'en C# est en relation avec les génériques. Ce n'est pas tout à fait inhabituel d'avoir quelque chose comme:
public class Generic<T>
{
private final Class<T> clazz;
public Generic(Class<T> clazz)
{
this.clazz = clazz;
}
}
Cela permet d'accéder exécution temps à la classe de réflexion etc. Cela est nécessaire en Java en raison de effacement de type, par lequel un objet d'un type générique peut Ne détermine normalement pas ses arguments de type au moment de l'exécution.
Certaines informations liées: 'System.Type' est un type général dans .Net, et non spécifique à C#. Je ne sais pas si le même est ou n'est pas vrai pour le type 'Class' dans la JVM (par opposition au langage Java lui-même). –
Il est assez difficile de trouver cette information venant de Java. J'ai cherché "C# class object", "C# reference to class" et beaucoup d'autres termes ne le connaissant pas s'appellent 'Type' en C# - les seules choses que vous obtiendrez sont des tutoriels et des introductions à OOP. Mais merci pour cette question :-) – Mitja