Freigeben über


MethodHandles.Lookup Klasse

Definition

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
MethodHandles.Lookup
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><<>staticbr><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 typedokumentiert. 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, aFieldund 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.invokeExactMethodHandle.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 Mkompiliert, überprüft und aufgelöst haben könnte. Wenn die JVM Ausnahmen auslösen würde, NoSuchMethodErrorlö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.asTypez. 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.Eoder 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 lookupModesauf 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 IllegalAccessExceptionFehler 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.forNamevorhanden 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 package , der zum Ergebnis beitragen #lookupModes lookupModeskann.

Private
Veraltet.

Eine Ein-Bit-Maske, die den Zugriff darstellt private , der zum Ergebnis beitragen #lookupModes lookupModeskann.

Protected
Veraltet.

Eine Ein-Bit-Maske, die den Zugriff darstellt protected , der zum Ergebnis beitragen #lookupModes lookupModeskann.

Public
Veraltet.

Eine Ein-Bit-Maske, die den Zugriff darstellt public , der zum Ergebnis beitragen #lookupModes lookupModeskann.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
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 name vom Typ type gibt, das in einer Klasse des Typs decldeklariert ist.

FindVarHandle(Class, String, Class)

Erzeugt ein VarHandle, das Zugriff auf ein nicht statisches Feld name vom Typ type gibt, das in einer Klasse des Typs recvdeklariert ist.

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 f vom Typ T gibt, das in einer Klasse des Typs Rdeklariert ist.

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)

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, 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)

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.

Gilt für: