Ich habe neuen Funktionen des Java 9 verbracht einige viel Zeit zu untersuchen, aber ich habe keine nützliche und praktische Beispiele.Korrekter Weg VarHandle in Java 9 zu verwenden?
Betrachten Schnipsel nächsten Code, der eine VarHandle erstellt: nächste
class Counter {
int i;
}
class VarHandleInAction {
static final VarHandle VH_COUNTER_FIELD_I;
static {
try {
VH_COUNTER_FIELD_I = MethodHandles.lookup().
in(Counter.class).
findVarHandle(Counter.class, "i", int.class);
} catch (Exception e) {
// ...
}
}
}
Aber was? Ich meine, wie man diesen variablen Handgriff benutzt? Können Sie irgendwelche realen Beispiele geben? das Feld Offset für den Zugriff auf
public final void lazySet(V newValue) {
unsafe.putOrderedObject(this, valueOffset, newValue);
}
public final boolean compareAndSet(V expect, V update) {
return unsafe.compareAndSwapObject(this, valueOffset, expect, update);
}
Hier ist die this
Zeiger verwendet wird, zusammen mit einem Feld:
Var Griffe (oder Methode behandelt) sind eher Low-Level-APIs für Methodenaufrufe und Speicheroperationen. Die meisten Leute werden diese APIs nie brauchen. –