2016-07-10 16 views
0

im OPAL-Framework, ist es möglich, manuell eine annotierte Methode zu erstellen?OPAL: Manuelles Erstellen einer annotierten Methode

Im Moment habe ich den folgenden Code:

Method(0, "signaturePolymorphicMethod", 
     MethodDescriptor(ObjectType("java/lang/Object"), VoidType), Seq()) 

und ich möchte die Anmerkung

@java.lang.invoke.MethodHandle$PolymorphicSignature 

dieser Methode hinzuzufügen. Wie kann ich das machen?

Antwort

1

Anmerkungen werden im Allgemeinen unter Verwendung des allgemeinen "Attributs" -Mechanismus der JVM gespeichert.

In diesem Fall ist die Annotation eine nicht öffentliche innere Klasse von MethodHandle mit der "Runtime Retention Policy". Um eine Methode mit einer "Polymorphen Signatur" zu markieren, muss daher RuntimeVisibibleAnnotations_Attribute der Attributtabelle der jeweiligen Methode hinzugefügt werden. Da die Sichtbarkeit der Annotation jedoch auf das java.lang.invoke-Paket beschränkt ist, ist dies (in diesem speziellen Fall) wahrscheinlich selten nützlich. Dennoch ist es möglich, Methoden im jeweiligen Paket

abzufragen