2009-07-08 6 views
2

J'ai essayé de décompiler une application Java à laquelle je n'ai pas le code source et une chose étrange est apparue. Au sommet du constructeur pour une classe, il y a une ligne qui ditthis = this en Java décompilé

this = this 

Qu'est-ce (pas ce) signifie? Est-ce juste un artefact du processus de décompilation? Ou est-ce juste un hack laid? Est-ce que peut être affecté à autre chose? Si oui, qu'est-ce que

this = null 

signifie?

+1

Il peut être utile de dire quel décompilateur - ce n'est pas légal Java. Javap -c vous donnera aussi les bytecodes réels. –

+1

(S'agit-il d'une classe interne définissant l'instance externe?) –

+5

Il y a une chance que le bytecode soit obfusqué pour empêcher la décompilation. L'utilisation de noms de variables illégaux comme les mots-clés Java est une bonne pratique ... –

Répondre

4

this est final. Vous ne pouvez certainement pas l'assigner. Je suppose que c'est un artefact de désassembleur.

Il y a un peu de goofy-ness avec des classes internes (qui contiennent this pointeurs vers la classe externe), mais ces lignes écrites ne sont pas des Java valides.

Questions connexes