android openjdk10,OPENJDK 10 - Bernie-Xie的个人空间 - OSCHINA - 中文开源技术交流社区

看到一个有意思的点, openjdk里如何定义class相关方法

源码地址:http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/777356696811/src/java.base/share/native/libjava/Class.c

#define OBJ "Ljava/lang/Object;"

#define CLS "Ljava/lang/Class;"

#define CPL "Ljdk/internal/reflect/ConstantPool;"

#define STR "Ljava/lang/String;"

#define FLD "Ljava/lang/reflect/Field;"

#define MHD "Ljava/lang/reflect/Method;"

#define CTR "Ljava/lang/reflect/Constructor;"

#define PD  "Ljava/security/ProtectionDomain;"

#define BA  "[B"

static JNINativeMethod methods[] = {

{"getName0",         "()" STR,          (void *)&JVM_GetClassName},

{"getSuperclass",    "()" CLS,          NULL},

{"getInterfaces0",   "()[" CLS,         (void *)&JVM_GetClassInterfaces},

{"isInterface",      "()Z",             (void *)&JVM_IsInterface},

{"getSigners",       "()[" OBJ,         (void *)&JVM_GetClassSigners},

{"setSigners",       "([" OBJ ")V",     (void *)&JVM_SetClassSigners},

{"isArray",          "()Z",             (void *)&JVM_IsArrayClass},

{"isPrimitive",      "()Z",             (void *)&JVM_IsPrimitiveClass},

{"getModifiers",     "()I",             (void *)&JVM_GetClassModifiers},

{"getDeclaredFields0","(Z)[" FLD,       (void *)&JVM_GetClassDeclaredFields},

{"getDeclaredMethods0","(Z)[" MHD,      (void *)&JVM_GetClassDeclaredMethods},

{"getDeclaredConstructors0","(Z)[" CTR, (void *)&JVM_GetClassDeclaredConstructors},

{"getProtectionDomain0", "()" PD,       (void *)&JVM_GetProtectionDomain},

{"getDeclaredClasses0",  "()[" CLS,      (void *)&JVM_GetDeclaredClasses},

{"getDeclaringClass0",   "()" CLS,      (void *)&JVM_GetDeclaringClass},

{"getSimpleBinaryName0", "()" STR,      (void *)&JVM_GetSimpleBinaryName},

{"getGenericSignature0", "()" STR,      (void *)&JVM_GetClassSignature},

{"getRawAnnotations",      "()" BA,        (void *)&JVM_GetClassAnnotations},

{"getConstantPool",     "()" CPL,       (void *)&JVM_GetClassConstantPool},

{"desiredAssertionStatus0","("CLS")Z",(void *)&JVM_DesiredAssertionStatus},

{"getEnclosingMethod0", "()[" OBJ,      (void *)&JVM_GetEnclosingMethodInfo},

{"getRawTypeAnnotations", "()" BA,      (void *)&JVM_GetClassTypeAnnotations},

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值