add demo for class file

This commit is contained in:
2025-03-24 23:42:44 +08:00
parent 4843f5b4d2
commit a010745843
5 changed files with 98 additions and 1 deletions

7
src/main/java/Main.java Normal file
View File

@@ -0,0 +1,7 @@
package main.java;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

View 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);
}
}

View 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;
}
}

View File

@@ -0,0 +1,9 @@
package jvm.classfile
class TestClassK {
private var m: Int = 0;
fun inc() : Int {
return m + 1
}
}