MCPcopy Create free account
hub / github.com/e2wugui/zeze / Reflect

Class Reflect

ZezeJava/ZezeJava/src/main/java/Zeze/Util/Reflect.java:30–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28import org.jetbrains.annotations.Nullable;
29
30public class Reflect {
31 public static final boolean inDebugMode = !"true".equalsIgnoreCase(System.getProperty("noDebugMode")) &&
32 ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
33 public static final @NotNull MethodHandles.Lookup lookup = MethodHandles.lookup();
34 public static final @NotNull StackWalker stackWalker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
35 public static final @NotNull MethodHandle supplierMH;
36 private static final HashMap<Class<?>, String> stableNameMap = new HashMap<>(32);
37 private static final HashMap<Class<?>, Class<?>> boxClassMap = new HashMap<>(16);
38
39 static {
40 try {
41 supplierMH = lookup.findVirtual(Supplier.class, "get", MethodType.methodType(Object.class));
42 } catch (ReflectiveOperationException e) {
43 throw new ExceptionInInitializerError(e);
44 }
45
46 stableNameMap.put(boolean.class, "bool");
47 stableNameMap.put(Boolean.class, "bool");
48 stableNameMap.put(byte.class, "byte");
49 stableNameMap.put(Byte.class, "byte");
50 stableNameMap.put(short.class, "short");
51 stableNameMap.put(Short.class, "short");
52 stableNameMap.put(int.class, "int");
53 stableNameMap.put(Integer.class, "int");
54 stableNameMap.put(long.class, "long");
55 stableNameMap.put(Long.class, "long");
56 stableNameMap.put(float.class, "float");
57 stableNameMap.put(Float.class, "float");
58 stableNameMap.put(double.class, "double");
59 stableNameMap.put(Double.class, "double");
60 stableNameMap.put(Binary.class, "binary");
61 stableNameMap.put(String.class, "string");
62 stableNameMap.put(char.class, "char");
63 stableNameMap.put(Character.class, "char");
64 stableNameMap.put(Vector2.class, "vector2");
65 stableNameMap.put(Vector3.class, "vector3");
66 stableNameMap.put(Vector4.class, "vector4");
67 stableNameMap.put(Quaternion.class, "quaternion");
68 stableNameMap.put(Vector2Int.class, "vector2int");
69 stableNameMap.put(Vector3Int.class, "vector3int");
70
71 stableNameMap.put(BigDecimal.class, "decimal");
72
73 boxClassMap.put(void.class, Void.class);
74 boxClassMap.put(boolean.class, Boolean.class);
75 boxClassMap.put(char.class, Character.class);
76 boxClassMap.put(byte.class, Byte.class);
77 boxClassMap.put(short.class, Short.class);
78 boxClassMap.put(int.class, Integer.class);
79 boxClassMap.put(long.class, Long.class);
80 boxClassMap.put(float.class, Float.class);
81 boxClassMap.put(double.class, Double.class);
82 }
83
84 private final HashMap<String, Method> methods = new HashMap<>();
85
86 public Reflect(@NotNull Class<?> cls) {
87 for (var c = cls; c != null; c = c.getSuperclass()) {

Callers

nothing calls this directly

Calls 5

getPropertyMethod · 0.80
putMethod · 0.65
indexOfMethod · 0.45
toStringMethod · 0.45
getInstanceMethod · 0.45

Tested by

no test coverage detected