我知道在JAVA中“native”是一件特别的事情。它可以做很多事情。但我现在无法阅读。我不知道如何...我知道它可以调用JAVA中的其他方法。我的问题是:它可以调用私有方法吗?如果是“是”,那么只能在同一个班级或任何其他班级中使用?如果可以打电话给他人,那么这可能是危险的吗?那就是,它违反了规则。我在哪里可以获得更多关于NATIVE的信息?任何人都可以给我看链接吗?本地方法可以调用私有方法吗?
6
A
回答
16
的JNI Programmer's Guide and Specification说,这在“10.9违反访问控制规则”:
“的JNI不强制类,字段和方法访问控制限制,这些限制可以通过使用修饰符(如private和final)在Java编程语言级别表达,可以编写本地代码来访问或修改对象的字段,即使在Java中这样做也是如此编程语言级别会导致一个n
IllegalAccessException
。 。JNI的宽容是一种有意识的设计决定的,因为原生代码可在堆反正访问和修改任何存储位置”
因此,问题的答案是:
它可以调用私有方法?
是。
如果是YES,那么只有在S ame课程还是其他课程?
任何一类。
如果它可以打电话给他人,那么这可能是一个危险的问题吗?那就是,它违反了规则。
上面引用的文字清楚地说明了设计者不试图执行正常Java访问规则的基本原理。是的,它是潜在的危险,但任何使用JNI是潜在的危险。
3
您可以调用通过JNI接口传递给本机方法的Java对象的私有方法。它与Java内部不同,在其他Java对象上调用方法。您必须非常小心,因为JNI不强制通过使用修饰符(例如private
和final
)表达的类,字段和方法访问控制限制。所以它可能是危险的。例如,在JIT编译器将其内联后,本机代码可以修改类的常量字段。
下面是关于函数指针和JNI的文档的相关部分:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp16696
相关问题
- 1. 我可以使用私人方法吗?
- 2. 调用私有方法
- 3. 可以拦截私人方法吗?
- 4. 反射和私有本地方法
- 5. 我可以用相同的方法调用一个方法吗?
- 6. @compatibility_alias可以调用实例方法吗?
- 7. 我可以从wsdl调用方法吗?
- 8. 类方法:以私有方法传递私有数据字段
- 9. PHP的session_set_save_handler中的回调方法可以是私人的吗?
- 10. 静态方法可以访问同一个类的私有方法吗?
- 11. 私有方法可访问
- 12. 可以从方法内部再次调用该方法吗?
- 13. 可以在方法内调用方法吗?
- 14. 我可以在Android的getView()方法中调用setContentView()方法吗?
- 15. 静态方法可以作为公共方法调用吗?
- 16. 方法可以对调用方法做出返回吗? c#
- 17. 使javascript私有方法可以访问它的公共方法
- 18. 有什么办法可以从父类调用子方法吗?
- 19. AsyncTask调用本地方法
- 20. C#扩展方法可以访问私有变量吗?
- 21. Ruby类使用静态方法调用私有方法?
- 22. 使用findVirtual调用的方法处理私有方法
- 23. 调用另一个私有方法的电源嘲讽私有方法
- 24. 可以不绑定地调用对象的成员方法吗?
- 25. 调用私有方法问题
- 26. 调用抽象类的私有方法
- 27. 在Flex中调用私有方法,Actionscript
- 28. 在Scala中调用私有Java方法
- 29. Rails ActiveConcern调用私有方法
- 30. 在Spring中调用私有方法@PreAuthorize
[Java本地接口程序员指南和规范](http://java.sun.com/docs/books/jni/html/jniTOC.html) – Sujay
@Sujay thx!我知道了 – blackdog