Ser*_*gio 11 java java-native-interface
假设我们需要在本机代码中实现一些java方法并将其公开给用户.我们知道所有工作都是由本机完成的,即java代码的唯一责任是将用户提供的参数传递给本机代码并返回结果.据此,java层可以用两种方式实现:
通过使用直接向用户公开的本机方法:
public native Object doSmth(Object arg0, Object arg1);
Run Code Online (Sandbox Code Playgroud)通过使用私有本机方法的瘦公共包装:
public Object doSmth(Object arg0, Object arg1) {
return nativeDoSmth(arg0, arg1);
}
private native Object nativeDoSmth(Object arg0, Object arg1);
Run Code Online (Sandbox Code Playgroud)我已经在实际项目中看到了这两种方法,甚至在同一项目中也看到了前者和后者.
因此,我的问题是:所提到的任何替代方案是否具有某些技术或性能或可维护性优势,应鼓励仅使用一种变体.或许这只是一个品味问题?
所以,我的问题是:提到的任何替代方案是否具有一些技术或性能或可维护性优势,这应该鼓励仅使用一种变体。
可维护性优势是这里的关键。正如评论中所述,该对象公开了其行为。如何实现不是用户的事。这为您提供了更大的灵活性。
假设将来(请参阅:可维护性)您发现您想要/需要调整该方法,以便它在本机调用之前和/或之后执行某些操作。在第一种方法中,您需要弃用该方法并创建一个新方法。在第二种方法中,您只需在方法中添加所需的任何内容,用户并不关心。
至于性能,理论上,第一种方法更快,因为它减少了一次调用。实际上,它是完全可以忽略不计的。
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |