Ade*_*ros 4 java reflection native
使用Java Reflection,您可以检测所有方法及其返回类型.但有没有办法检测方法是否被声明native?
Raz*_*van 11
是的,你getModifiers()可以.该方法返回一个int,应用正确的掩码可以告诉你该方法是否是本机的
为方便起见,我建议这样做:
int modifiers = myMethod.getModifiers();
boolean isNative = Modifier.isNative(modifiers);
Run Code Online (Sandbox Code Playgroud)
Modifier类是一个实用程序专用类,用于应用适当的掩码以发现方法的修饰符.
您可以检查与方法关联的修改器.下面的示例打印Object的所有本机方法:
for (Method m : methods) {
int mod = m.getModifiers();
if ((mod & Modifier.NATIVE) != 0) {
System.out.println(m.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
这个其他答案提供了一种避免按位匹配部分的更好方法.
Method有一个getModifiers()方法,它将修饰符作为int返回,其中一个修饰符是Modifier.NATIVE你正在寻找的.Modifier.isNative()可用于解码参数getModifiers().
(基本上,如果你的方法作为一个方法对象命名m,那么Modifier.isNative(m.getModifiers())应该这样做.)
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |