java中可以通过类的class属性得到该类的字节码文件对象?
ringa_lee
ringa_lee 2017-04-18 10:50:41
0
2
578


Class c1 = Student.class;
可是无论是Student类还是它继承的Object类都没有class属性呀?

ringa_lee
ringa_lee

ringa_lee

répondre à tous(2)
巴扎黑

Merci pour l'invitation.

Tout d'abord, corrigez une erreur. La classe est un mot-clé, pas un membre statique de la classe Student. <class-name>.class est une syntaxe spécifique à Java.

Deuxièmement, pour obtenir le fichier bytecode de cette classe, vous devez vous rendre dans le système de fichiers pour le trouver, ce qui n'est rien de plus que des méthodes comme Student.class.getResource/getResourceAsStream, ce qui est assez gênant. Il est recommandé de consulter des projets open source de bytecode tels que asm et cglib.

Enfin, le bytecode est une technologie relativement complexe et doit être utilisé en dernier recours, comme par exemple pour obtenir l'annotation dans les paramètres de la méthode (voir Spring Web MVC). Certaines technologies qui semblent liées au bytecode peuvent en fait être contournées. Par exemple, l'AOP basé sur une interface peut être implémenté en utilisant un proxy au lieu du bytecode.

大家讲道理

Une théorie que j'ai vérifiée est qu'il ne s'agit pas d'un mot-clé, mais d'une valeur littérale. Vous pouvez essayer de taper "Student.class" directement dans l'EDI, et cela vous rappellera que vous devez attribuer cette valeur à une variable. . Si nous en trouvons de nouveaux plus tard, nous les ajouterons. Quant au chargement des classes, vous pouvez vous référer à mon blog Customized Class Loader - Reading from .class and .jar

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal