MethodHandles.Lookup Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert.
[Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MethodHandles.Lookup : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/MethodHandles$Lookup", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodHandles.Lookup = class
inherit Object
- Vererbung
- Attribute
Hinweise
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. Methodenhandles führen keine Zugriffsüberprüfungen aus, wenn sie aufgerufen werden, sondern wenn sie erstellt werden. Daher müssen Zugriffsbeschränkungen beim Erstellen eines Methodenhandle erzwungen werden. Die Aufruferklasse, für die diese Einschränkungen erzwungen werden, wird als #lookupClass Nachschlageklasse bezeichnet.
Eine Nachschlageklasse, die Methodenhandles erstellen muss, ruft zum Erstellen einer Factory für sich selbst auf #lookup MethodHandles.lookup
. Wenn das Lookup
Factoryobjekt erstellt wird, wird die Identität der Nachschlageklasse bestimmt und sicher im Lookup
Objekt gespeichert. Die Nachschlageklasse (oder die zugehörigen Stellvertretungen) können dann Factorymethoden für das Lookup
Objekt verwenden, um Methodenhandles für access-überprüfte Member zu erstellen. Dazu gehören alle Methoden, Konstruktoren und Felder, die der Nachschlageklasse, sogar privaten, zulässig sind.
<h1>"lookup> Factory Methods/h1> The factory methods< on a Lookup
object correspond to all major use cases for methods, constructors, and fields. Jedes von einer Factorymethode erstellte Methodenhandle ist die funktionale Entsprechung eines bestimmten <Em-Bytecode-Verhaltens></em>. (Bytecodeverhalten wird in Abschnitt 5.4.3.5 der Java Virtual Machine Specification beschrieben.) Hier ist eine Zusammenfassung der Korrespondenz zwischen diesen Factorymethoden und dem Verhalten, das die resultierenden Methodenhandles: <Table border=1 cellpadding=5 summary="lookup method behaviors"<>tr<>th>"equiv">lookup expression</th th>><member</th><th>bytecode behavior</th></tr><td><<java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)
>/td></td tdFT f;
<>/td<>(T) this.f;
></td></tr><tr><td>java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)
</td td><<>static
br><FT f;
/td td>(T) C.f;
><</td></tr>><<td<java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)
>/td><td/td tdFT f;
<>/td<this.f = x;
><>/tr<>><tdjava.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)
<>/td>><static
<>< br><FT f;
/td td><<>C.f = arg;
/td></tr><><td>java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)
</td>T m(A*);
<>< td/td><td><(T) this.m(arg*);
/td></tr><><td/tdjava.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)
>< td td><>static
<br<>T m(A*);
/td td></td<(T) C.m(arg*);
><>/tr><><td><java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)
/td>><<T m(A*);
td/><td td/td/td><(T) super.m(arg*);
<>/tr><><td><java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)
/td<>C(A*);
td/td><<>td><new C(arg*);
/td></tr><td></td tdjava.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)
<>/td td<>>(static
)?<br>FT f;
</td td>><(FT) aField.get(thisOrNull);
</td></tr><td></tdjava.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)
<> td<>>(static
)?<br>FT f;
</td td>><aField.set(thisOrNull, arg);
</td></tr><td></tdjava.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)
<> td<>>(static
)?<br>T m(A*);
</td td><><(T) aMethod.invoke(thisOrNull, arg*);
/td></tr><<>td>java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)
</td<>td/td td>C(A*);
</td<(C) aConstructor.newInstance(arg*);
>></tr td></td<><> td><java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)
/td td<>>(static
)?<br><T m(A*);
/td><td><(T) aMethod.invoke(thisOrNull, arg*);
/td></tr></table>
Hier ist der Typ C
die Klasse oder Schnittstelle, die nach einem Element gesucht wird, dokumentiert als Parameter, der in den Nachschlagemethoden benannt ist refc
. Der Methodentyp MT
besteht aus dem Rückgabetyp T
und der Abfolge von Argumenttypen A*
. Der Konstruktor verfügt auch über eine Abfolge von Argumenttypen A*
und gilt als Rückgabe des neu erstellten Objekts vom Typ C
. Sowohl als auch MT
der Feldtyp FT
werden als Parameter mit dem Namen type
dokumentiert. Der formale Parameter this
steht für den Selbstverweis des Typs C
; wenn er vorhanden ist, ist er immer das führende Argument für den Methodenhandaufruf. (Im Falle einiger protected
Member this
kann der Typ auf die Nachschlageklasse beschränkt sein; siehe unten.) Der Name arg
steht für alle anderen Methodenhandleargumente. In den Codebeispielen für die Core Reflection-API steht der Name thisOrNull
für einen NULL-Verweis, wenn die methode oder das Feld statisch ist und this
andernfalls. Die Namen aMethod
, aField
und aConstructor
stehen für reflektierende Objekte, die den angegebenen Mitgliedern entsprechen.
In Fällen, in denen das angegebene Element variabler Arität (d. h. einer Methode oder eines Konstruktors) ist der zurückgegebene Methodenhandle auch der Variable "MethodHandle#asVarargsCollector"-Variablen arität. In allen anderen Fällen hat der zurückgegebene Methodenhandle einen festen Arity-Wert. <p style="font-size:smaller;"><em>Discussion:</em> Die Äquivalenz zwischen Looked-up-Methodenhandles und zugrunde liegenden Klassenmembern und Bytecodeverhalten kann auf verschiedene Arten aufgeteilt werden: <ul style="font-size:smaller;"><li>Wenn C
über das Ladeprogramm der Nachschlageklasse nicht symbolisch zugegriffen werden kann, kann die Suche trotzdem erfolgreich sein, auch wenn keine entsprechende Java-Ausdrucks- oder Bytecode-Konstante vorhanden ist. <li>likewise, if T
or MT
is not symbolically accessible from the lookup class's loader, the lookup can still succeed. Beispielsweise können Nachschlagevorgänge unabhängig MethodHandle.invokeExact
MethodHandle.invoke
vom angeforderten Typ immer erfolgreich ausgeführt werden. <li>Wenn ein Sicherheitsmanager installiert ist, kann er die Suche aus verschiedenen Gründen verbieten (siehe unten). Im Gegensatz dazu unterliegt die ldc
Anweisung für eine CONSTANT_MethodHandle
Konstante nicht den Sicherheits-Manager-Prüfungen. <li>Wenn die Nachschlagemethode eine sehr große Arität aufweist, kann die Methodenhandleerstellung fehlschlagen, da der Methodenhandle-Typ zu viele Parameter aufweist. </ul>
<h1>"access">Access Checking/h1> Access checks< are applied in the factory methods of Lookup
, when a method handle is created. Dies ist ein wichtiger Unterschied zur Core Reflection-API, da java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke
die Zugriffsüberprüfung für jeden Aufrufer für jeden Aufruf ausgeführt wird.
Alle Zugriffsprüfungen beginnen mit einem Lookup
Objekt, das die aufgezeichnete Nachschlageklasse mit allen Anforderungen zum Erstellen von Methodenhandles vergleicht. Ein einzelnes Lookup
Objekt kann verwendet werden, um eine beliebige Anzahl von zugriffsgecheckten Methodenhandles zu erstellen, die alle für eine einzelne Nachschlageklasse überprüft werden.
Ein Lookup
Objekt kann mit einem anderen vertrauenswürdigen Code, z. B. einem Metaobject-Protokoll, geteilt werden. Ein freigegebenes Lookup
Objekt delegiert die Funktion zum Erstellen von Methodenhandles für private Member der Nachschlageklasse. Auch wenn privilegierter Code das Lookup
Objekt verwendet, ist die Zugriffsüberprüfung auf die Berechtigungen der ursprünglichen Nachschlageklasse beschränkt.
Ein Nachschlagevorgang kann fehlschlagen, da auf die enthaltende Klasse nicht auf die Nachschlageklasse zugegriffen werden kann, oder weil der gewünschte Klassenmemmemb nicht auf die Nachschlageklasse zugegriffen werden kann, oder weil das Nachschlageobjekt nicht vertrauenswürdig genug ist, um auf das Element zuzugreifen. In einem dieser Fälle wird eine ReflectiveOperationException
aus dem versuchten Nachschlagevorgang ausgelöst. Die genaue Klasse ist eine der folgenden: <ul<>li>NoSuchMethodException — if a method is requested but does not exist <li>NoSuchFieldException — if a field is requested but does not exist <li>IllegalAccessException — if the member exists but an access check fails </ul>
Im Allgemeinen sind die Bedingungen, unter denen ein Methodenhandle nach einer Methode M
gesucht werden kann, nicht restriktiver als die Bedingungen, unter denen die Nachschlageklasse einen Aufruf M
kompiliert, überprüft und aufgelöst haben könnte. Wenn die JVM Ausnahmen auslösen würde, NoSuchMethodError
löst ein Methodenhandle-Nachschlagevorgang im Allgemeinen eine entsprechende überprüfte Ausnahme aus, z NoSuchMethodException
. B. . Und die Auswirkung des Aufrufens des Methodenhandles, das sich aus dem Nachschlagevorgang ergibt, entspricht genau der Ausführung des kompilierten, überprüften und aufgelösten Aufrufs an M
. Derselbe Punkt gilt für Felder und Konstruktoren. <p style="font-size:smaller;"><em>Discussion:</em> Access-Prüfungen gelten nur für benannte und reflektierte Methoden, Konstruktoren und Felder. Andere Methoden behandeln Erstellungsmethoden wie MethodHandle#asType MethodHandle.asType
z. B. keine Zugriffsüberprüfungen und werden unabhängig von jedem Lookup
Objekt verwendet.
Wenn das gewünschte Element lautet protected
, gelten die üblichen JVM-Regeln, einschließlich der Anforderung, dass sich die Nachschlageklasse entweder im gleichen Paket wie das gewünschte Element befinden muss, oder dieses Mitglied erben muss. (Siehe die Java Virtual Machine Specification, Abschnitte 4.9.2, 5.4.3.5 und 6.4.) Wenn das gewünschte Element ein nicht statisches Feld oder eine Methode in einem anderen Paket ist, kann das resultierende Methodenhandle nur auf Objekte der Nachschlageklasse oder einer seiner Unterklassen angewendet werden. Diese Anforderung wird erzwungen, indem der Typ des führenden this
Parameters auf C
die Nachschlageklasse selbst beschränkt wird (dies ist notwendigerweise eine Superklasse der Nachschlageklasse).
Das JVM setzt eine ähnliche Anforderung an invokespecial
Anweisung fest, dass das Empfängerargument sowohl der aufgelösten Methode <em>als< auch/em> der aktuellen Klasse entsprechen muss. Auch hier wird diese Anforderung erzwungen, indem der Typ des führenden Parameters auf den resultierenden Methodenhandle beschränkt wird. (Siehe Java Virtual Machine Specification, Abschnitt 4.10.1.9.)
Das JVM stellt Konstruktoren und statische Initialisierungsblöcke als interne Methoden mit speziellen Namen ("<init>"
und "<clinit>"
) dar. Die interne Syntax von Aufrufanweisungen ermöglicht es ihnen, auf solche internen Methoden zu verweisen, als wären sie normale Methoden, aber der JVM-Bytecodeprüfer lehnt sie ab. Ein Nachschlagevorgang einer solchen internen Methode erzeugt eine NoSuchMethodException
.
In einigen Fällen wird der Zugriff zwischen geschachtelten Klassen vom Java-Compiler abgerufen, indem eine Wrappermethode erstellt wird, um auf eine private Methode einer anderen Klasse in derselben Deklaration der obersten Ebene zuzugreifen. Beispielsweise kann eine geschachtelte Klasse C.D
auf private Member innerhalb anderer verwandter Klassen zugreifen, z C
. B. , C.D.E
oder C.B
, aber der Java-Compiler muss möglicherweise Wrappermethoden in diesen verwandten Klassen generieren. In solchen Fällen wäre ein Lookup
Objekt für C.E
diese privaten Mitglieder nicht möglich. Eine Problemumgehung für diese Einschränkung ist die Methode, mit der Lookup#in Lookup.in
ein Nachschlagevorgang C.E
in eine dieser anderen Klassen ohne spezielle Rechteerweiterungen umgewandelt werden kann.
Der Zugriff auf ein bestimmtes Nachschlageobjekt kann gemäß seiner Gruppe #lookupModes lookupModes
auf eine Teilmenge der Elemente beschränkt werden, die normalerweise für die Nachschlageklasse zugänglich sind. Die Methode erzeugt beispielsweise ein Nachschlageobjekt, #publicLookup publicLookup
das nur auf öffentliche Member in öffentlichen Klassen zugreifen darf. Die sensible Methode #lookup lookup
des Aufrufers erzeugt ein Nachschlageobjekt mit vollständigen Funktionen relativ zur Aufruferklasse, um alle unterstützten Bytecodeverhalten zu emulieren. Außerdem kann die Lookup#in Lookup.in
Methode ein Nachschlageobjekt mit weniger Zugriffsmodi als das ursprüngliche Nachschlageobjekt erzeugen.
<p style="font-size:smaller;"> " privacc"><em>Diskussion über den privaten Zugriff:</em> Wir sagen, dass ein Nachschlagevorgang den>privaten Zugriff</em> hat<, wenn seine #lookupModes Nachschlagemodi die Möglichkeit zum Zugriff auf private
Mitglieder umfassen. Wie in den relevanten Methoden an anderer Stelle dokumentiert, verfügen nur Nachschlagevorgänge mit privatem Zugriff über die folgenden Funktionen: <ul style="font-size:smaller;"><li>access private Felder, Methoden und Konstruktoren der Nachschlageklasse <li>Create-Methode behandelt, mit der aufrufersensitive Methoden aufgerufen werden, z<Class.forName
. B. li>create-Methode, welche Lookup#findSpecial emulate invokespecial
Anweisungen <li>vermeiden, Paketzugriffsprüfungen für Klassen, die für die Nachschlageklasse <li>zugänglich Lookup#in delegated lookup objects
sind, erstellen, die privaten Zugriff auf andere Klassen innerhalb desselben Paketmemers </ul><p style="font-size: kleiner;"> Jede dieser Berechtigungen ist eine Folge der Tatsache, dass ein Nachschlageobjekt mit privatem Zugriff sicher auf eine ursprüngliche Klasse zurückverfolgt werden kann, deren Bytecodeverhalten und Java-Sprachzugriffsberechtigungen zuverlässig bestimmt und von Methodenhandles emuliert werden können.
<h1>"secmgr">Security Manager-Interaktionen</h1> Obwohl Bytecodeanweisungen nur auf Klassen in einem zugehörigen Klassenladeprogramm verweisen können, kann diese API nach Methoden in jeder Klasse suchen, solange ein Verweis auf das Class
Objekt verfügbar ist. Solche Querladeverweise sind auch mit der Core Reflection-API möglich und können nicht bytecode-Anweisungen wie invokestatic
oder getfield
. Es gibt eine java.lang.SecurityManager-Sicherheitsmanager-API, mit der Anwendungen solche Querladeverweise überprüfen können. Diese Prüfungen gelten sowohl für die MethodHandles.Lookup
API als auch für die Core Reflection-API (wie unter ).java.lang.Class Class
Wenn ein Sicherheits-Manager vorhanden ist, unterliegen Member-Nachschlagevorgängen zusätzlichen Überprüfungen. Von 1 bis drei Anrufen werden an den Sicherheitsmanager getätigt. Jeder dieser Anrufe kann den Zugang verweigern, indem er eine java.lang.SecurityException SecurityException
. Definieren Sie smgr
als Sicherheits-Manager lookc
als Nachschlageklasse des aktuellen Nachschlageobjekts als enthaltende Klasse, refc
in der das Element gesucht wird, und defc
als Klasse, in der der Member tatsächlich definiert ist. Der Wert lookc
wird als <em>nicht vorhanden</em> definiert, wenn das aktuelle Nachschlageobjekt keinen privaten Zugriff hat. Die Aufrufe werden gemäß den folgenden Regeln ausgeführt: <ul><li><b>Step 1:</b> If is not present, or if lookc
its class loader is not the same as or an ancestor of the class loader of refc
, then SecurityManager#checkPackageAccess smgr.checkPackageAccess(refcPkg)
is called, where refcPkg
is the package of refc
. <li><b>Schritt 2:</b> Wenn das abgerufene Mitglied nicht öffentlich ist und lookc
nicht vorhanden ist, wird es SecurityManager#checkPermission smgr.checkPermission
aufgerufen RuntimePermission("accessDeclaredMembers")
. <li><b>Schritt 3:</b> Wenn das abgerufene Mitglied nicht öffentlich ist und wenn lookc
nicht vorhanden ist, und wenn defc
dies refc
nicht vorhanden ist und anders sind, wird dann SecurityManager#checkPackageAccess smgr.checkPackageAccess(defcPkg)
aufgerufen, wo defcPkg
das Paket von defc
. </ul> Sicherheitsüberprüfungen werden ausgeführt, nachdem andere Zugriffsprüfungen bestanden wurden. Aus diesem Grund müssen die oben genannten Regeln ein Mitglied voraussetzen, das öffentlich ist oder von einer Nachschlageklasse aus zugegriffen wird, die über Rechte für den Zugriff auf das Mitglied verfügt.
<h1>"callsens">Caller sensitive methods/h1> A small number of Java methods< have a special property called caller sensitivity. Eine <em-caller-sensitive></em-Methode> kann sich je nach Identität des unmittelbaren Aufrufers anders verhalten.
Wenn ein Methodenhandle für eine aufrufersensitive Methode angefordert wird, gelten die allgemeinen Regeln für Bytecodeverhalten, berücksichtigen jedoch die Nachschlageklasse auf besondere Weise. Das resultierende Methodenhandle verhält sich so, als ob sie von einer Anweisung aufgerufen wurde, die in der Nachschlageklasse enthalten ist, damit die aufrufersensitive Methode die Nachschlageklasse erkennt. (Im Gegensatz dazu wird der Aufrufer des Methodenhandles ignoriert.) Daher können bei Aufrufer-vertraulichen Methoden unterschiedliche Nachschlageklassen zu unterschiedlichen Verhaltensmethodenhandles führen.
In Fällen, in denen das Nachschlageobjekt oder ein anderes Nachschlageobjekt ohne privaten Zugriff ist #publicLookup publicLookup()
, wird die Nachschlageklasse ignoriert. In solchen Fällen kann kein Handle für aufrufersensitive Methoden erstellt werden, der Zugriff ist verboten, und die Suche schlägt mit einem IllegalAccessException
Fehler fehl. <p style="font-size:smaller;"><em>Discussion:</em> For example, the caller-sensitive method java.lang.Class#forName(String) Class.forName(x)
can return varying classes or throw varying exceptions, depending on the class loader of the class that calls it. Ein öffentlicher Nachschlagevorgang Class.forName
schlägt fehl, da es keine vernünftige Möglichkeit gibt, sein Bytecodeverhalten zu ermitteln. <p style="font-size:smaller;"> Wenn eine Anwendung Methodenhandles für die allgemeine Freigabe zwischenspeichert, sollte sie zum Erstellen verwendet werden publicLookup()
. Wenn ein Nachschlagevorgang Class.forName
vorhanden ist, schlägt sie fehl, und die Anwendung muss in diesem Fall geeignete Maßnahmen ergreifen. Es kann sein, dass ein späterer Nachschlagevorgang, vielleicht während des Aufrufs einer Bootstrap-Methode, die spezifische Identität des Aufrufers integrieren kann, wodurch die Methode zugänglich ist. <p style="font-size:smaller;"> Die Funktion MethodHandles.lookup
ist vertraulich, sodass es eine sichere Grundlage für Nachschlagevorgänge geben kann. Fast alle anderen Methoden in der JSR 292-API basieren auf Nachschlageobjekten, um Zugriffsanforderungen zu überprüfen.
Java-Dokumentation für java.lang.invoke.MethodHandles.Lookup
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Felder
Package |
Veraltet.
Eine Ein-Bit-Maske, die den Zugriff (Standardzugriff) darstellt |
Private |
Veraltet.
Eine Ein-Bit-Maske, die den Zugriff darstellt |
Protected |
Veraltet.
Eine Ein-Bit-Maske, die den Zugriff darstellt |
Public |
Veraltet.
Eine Ein-Bit-Maske, die den Zugriff darstellt |
Eigenschaften
Class |
Gibt die Laufzeitklasse dieses Werts |
Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
JniIdentityHashCode |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
JniPeerMembers |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. |
PeerReference |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Object) |
Methoden
Bind(Object, String, MethodType) |
Erzeugt einen früh gebundenen Methodenhandle für eine nicht statische Methode. |
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
Dispose() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
Dispose(Boolean) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
FindConstructor(Class, MethodType) |
Erzeugt ein Methodenhandle, das ein Objekt erstellt und mithilfe des Konstruktors des angegebenen Typs initialisiert. |
FindGetter(Class, String, Class) |
Erzeugt ein Methodenhandle, das Lesezugriff auf ein nicht statisches Feld ermöglicht. |
FindSetter(Class, String, Class) |
Erzeugt ein Methodenhandle, das Schreibzugriff auf ein nicht statisches Feld ermöglicht. |
FindSpecial(Class, String, MethodType, Class) |
Erzeugt ein früh gebundenes Methodenhandle für eine virtuelle Methode. |
FindStatic(Class, String, MethodType) |
Erzeugt ein Methodenhandle für eine statische Methode. |
FindStaticGetter(Class, String, Class) |
Erzeugt ein Methodenhandle, das Lesezugriff auf ein statisches Feld ermöglicht. |
FindStaticSetter(Class, String, Class) |
Erzeugt ein Methodenhandle, das Schreibzugriff auf ein statisches Feld ermöglicht. |
FindStaticVarHandle(Class, String, Class) |
Erzeugt ein VarHandle, das Zugriff auf ein statisches Feld |
FindVarHandle(Class, String, Class) |
Erzeugt ein VarHandle, das Zugriff auf ein nicht statisches Feld |
FindVirtual(Class, String, MethodType) |
Erzeugt ein Methodenhandle für eine virtuelle Methode. |
GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
In(Class) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. |
JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
LookupClass() |
Gibt an, welche Klasse die Suche durchführt. |
LookupModes() |
Gibt an, welche Zugriffsschutzklassen von Elementen dieses Nachschlageobjekts erzeugen kann. |
Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
RevealDirect(MethodHandle) |
Cracks a direct method handle created by this lookup object or a similar one. |
SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
ToArray<T>() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
Unreflect(Method) |
Führt ein direktes Methodenhandle zu m durch, wenn die Nachschlageklasse über die Berechtigung verfügt. |
UnreflectConstructor(Constructor) |
Erzeugt ein Methodenhandle für einen reflektierten Konstruktor. |
UnreflectGetter(Field) |
Erzeugt ein Methodenhandle, das Lesezugriff auf ein reflektiertes Feld ermöglicht. |
UnreflectSetter(Field) |
Erzeugt ein Methodenhandle, das Schreibzugriff auf ein reflektiertes Feld ermöglicht. |
UnreflectSpecial(Method, Class) |
Erzeugt ein Methodenhandle für eine reflektierte Methode. |
UnreflectVarHandle(Field) |
Erzeugt eine VarHandle, die Zugriff auf ein reflektiertes Feld |
UnregisterFromRuntime() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<>< (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IJavaPeerable.Disposed() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.Finalized() |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.JniManagedPeerState |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. (Geerbt von Object) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
JavaCast<TResult>(IJavaObject) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. |
GetJniTypeName(IJavaPeerable) |
Ein <Em-Nachschlageobjekt></em> ist eine Factory zum Erstellen von Methodenhandles, wenn die Erstellung eine Zugriffsüberprüfung erfordert. |