add demo for class file
This commit is contained in:
7
src/main/java/Main.java
Normal file
7
src/main/java/Main.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package main.java;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello, World!");
|
||||
}
|
||||
}
|
||||
41
src/main/java/VarHandlerDemoRunner.java
Normal file
41
src/main/java/VarHandlerDemoRunner.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package main.java;
|
||||
|
||||
import jvm.VarHandleDemo;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.VarHandle;
|
||||
|
||||
public class VarHandlerDemoRunner {
|
||||
|
||||
public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException {
|
||||
VarHandleDemo instance = new VarHandleDemo();
|
||||
|
||||
//access private field
|
||||
VarHandle varHandle = MethodHandles
|
||||
.privateLookupIn(VarHandleDemo.class, MethodHandles.lookup())
|
||||
.findVarHandle(VarHandleDemo.class, "privateVar", int.class);
|
||||
varHandle.set(instance, 33);
|
||||
System.out.println(instance);
|
||||
|
||||
//access protected field
|
||||
VarHandle varHandle2 = MethodHandles
|
||||
.privateLookupIn(VarHandleDemo.class,MethodHandles.lookup())
|
||||
.findVarHandle(VarHandleDemo.class, "protectedVar", int.class);
|
||||
varHandle2.set(instance, 22);
|
||||
System.out.println(instance);
|
||||
|
||||
//access public field
|
||||
VarHandle varHandle3 = MethodHandles.lookup()
|
||||
.in(VarHandleDemo.class)
|
||||
.findVarHandle(VarHandleDemo.class, "publicVar", int.class);
|
||||
varHandle3.set(instance, 11);
|
||||
System.out.println(instance);
|
||||
|
||||
//access array
|
||||
VarHandle varHandle4 = MethodHandles.arrayElementVarHandle(int[].class);
|
||||
varHandle4.compareAndSet(instance.publicArrayData, 0, 1,11);
|
||||
varHandle4.compareAndSet(instance.publicArrayData, 1, 2,22);
|
||||
varHandle4.compareAndSet(instance.publicArrayData, 2, 3,33);
|
||||
System.out.println(instance);
|
||||
}
|
||||
}
|
||||
13
src/main/java/jvm/classfile/TestClass.java
Normal file
13
src/main/java/jvm/classfile/TestClass.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package jvm.classfile;
|
||||
|
||||
/**
|
||||
* Compile for examine class file
|
||||
*/
|
||||
public class TestClass {
|
||||
|
||||
private int m;
|
||||
|
||||
public int inc() {
|
||||
return m+1;
|
||||
}
|
||||
}
|
||||
9
src/main/java/jvm/classfile/TestClassK.kt
Normal file
9
src/main/java/jvm/classfile/TestClassK.kt
Normal file
@@ -0,0 +1,9 @@
|
||||
package jvm.classfile
|
||||
|
||||
class TestClassK {
|
||||
private var m: Int = 0;
|
||||
|
||||
fun inc() : Int {
|
||||
return m + 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user