Ich experimentiere mit der ASM-Bibliothek.Abrufen von Feld in einer Klasse als Byte-Array
Ich habe eine Klasse gespeichert als byte[]
, dh beginnend mit CAFEBABE, mit einem konstanten Pool, etc.
Ich mag diese Klasse laden und ein Feld in einer Art und Weise so bequem wie möglich zu extrahieren, wie dieses Verfahren würde zu einer Methode mit ASM hinzugefügt werden.
Gibt es eine einfache Möglichkeit, ein Byte-Array als eine Klasse zu laden, ohne mit benutzerdefinierten Klassenlatern und dergleichen zu verwirren?
Soweit ich weiß, bietet ASM Ihnen keine alternative API. Aber was ist falsch daran, eine Unterklasse von 'ClassLoader' zu erstellen (benötigt keine zusätzlichen Mitglieder) und' defineClass' darauf aufzurufen? – Holger
Kann der Systemklassenlader nicht verwendet werden? – konsolas
Die Methode 'defineClass' ist' protected'. Sie können Reflection und access override verwenden, um die Methode für den Systemklassenlader aufzurufen. Dies ist jedoch nicht einfacher als das Erstellen einer Unterklasse von 'ClassLoader' ohne zusätzliche Member. – Holger