diff --git a/c/native.c b/c/native.c index 0d1f2bf..a1374f1 100644 --- a/c/native.c +++ b/c/native.c @@ -118,19 +118,19 @@ const static struct native_method native_method[] = { }, { .class_name = "java/lang/Class", - .method_name = "getClassName", + .method_name = "_getName", .method_descriptor = "()Ljava/lang/String;", - .func = native_java_lang_class_getclassname_1, + .func = native_java_lang_class_getname_1, }, { .class_name = "java/lang/Object", - .method_name = "getClass", + .method_name = "_getClass", .method_descriptor = "()Ljava/lang/Class;", .func = native_java_lang_object_getclass_1, }, { .class_name = "java/lang/Object", - .method_name = "hashCode", + .method_name = "_hashCode", .method_descriptor = "()I", .func = native_java_lang_object_hashcode_1, }, diff --git a/c/native/class.c b/c/native/class.c index b634427..75c7c26 100644 --- a/c/native/class.c +++ b/c/native/class.c @@ -2,7 +2,7 @@ #include "printf.h" #include "vm_instance.h" -void native_java_lang_class_getclassname_1(struct vm * vm, uint32_t * args) +void native_java_lang_class_getname_1(struct vm * vm, uint32_t * args) { struct objectref * objectref = (struct objectref *)args[0]; assert(objectref != nullptr); diff --git a/c/native/class.h b/c/native/class.h index da6d023..0c7a33c 100644 --- a/c/native/class.h +++ b/c/native/class.h @@ -4,4 +4,4 @@ #include "frame.h" -void native_java_lang_class_getclassname_1(struct vm * vm, uint32_t * args); +void native_java_lang_class_getname_1(struct vm * vm, uint32_t * args); diff --git a/classes/java/lang/Class.java b/classes/java/lang/Class.java index 83c9a86..5fd5f89 100644 --- a/classes/java/lang/Class.java +++ b/classes/java/lang/Class.java @@ -1,17 +1,17 @@ package java.lang; -public class Class { +public final class Class { private Object object; private String name; private Class() { } - private native String getClassName(); + private native String _getName(); public String getName() { if (this.name == null) { - this.name = getClassName(); + this.name = _getName(); } return this.name; } diff --git a/classes/java/lang/Object.java b/classes/java/lang/Object.java index 171178e..7f37027 100644 --- a/classes/java/lang/Object.java +++ b/classes/java/lang/Object.java @@ -3,11 +3,28 @@ package java.lang; public class Object { public Object() {} - public final native Class getClass(); + protected Object clone() + throws CloneNotSupportedException { + throw new CloneNotSupportedException(); + } - public native int hashCode(); + public boolean equals(Object obj) { + return this == obj; + } + + private final native Class _getClass(); + + public final Class getClass() { + return _getClass(); + } + + private native int _hashCode(); + + public int hashCode() { + return _hashCode(); + } public String toString() { - return getClass().getName() + "@" + Integer.toString(hashCode()); + return getClass().getName() + "@" + Integer.toHexString(hashCode()); } }