2009-07-08 7 views
2

Ich habe versucht, eine Java-Anwendung zu dekompilieren, auf die ich den Quellcode nicht habe und eine seltsame Sache auftauchte. An der Spitze des Konstruktor für eine Klasse gibt es eine Zeile, diedies = das in dekompilierten Java

this = this 

Was sagt nicht diese (nicht diese) bedeuten? Ist das nur ein Artefakt des Dekompilierungsprozesses? Oder ist es nur ein hässlicher Hack? Kann dieser etwas anderes zugewiesen werden? Wenn ja, was tut

this = null 

bedeuten?

+1

Es könnte nützlich sein zu sagen, welcher Decompiler - es ist nicht legal Java. Auch javap -c gibt Ihnen die tatsächlichen Bytecodes. –

+1

(Ist es eine innere Klasse, die die äußere Instanz einstellt?) –

+5

Es besteht die Möglichkeit, dass der Bytecode verschleiert wird, um ein Dekompilieren zu verhindern. Die Verwendung illegaler Variablennamen wie Java-Schlüsselwörter ist eine nette Übung ... –

Antwort

4

this ist endgültig. Du kannst es definitiv nicht zuordnen. Ich vermute, das ist ein Disassembler-Artefakt.

Es gibt einige potentielle Goofy-Ness mit inneren Klassen (die this Zeiger auf die äußere Klasse enthalten), aber diese Zeilen wie geschrieben sind nicht gültig Java.