本机实现抽象方法

时间:2017-06-12 12:16:26

标签: java java-native-interface abstract-class

在Java中是否允许在类中使用抽象方法,然后使用JNI在其他语言中使用本机语言实现它。

示例:

abstract class Mommy {
abstract protected void call();
}
class Son extends Mommy {
 native protected void call() /*
'native code'
*/
}

预期的行为是什么,可能发生的运行时错误或一切都很好"解决方法" ?

2 个答案:

答案 0 :(得分:2)

  

预期的行为是可能发生的运行时错误还是“解决方法”一切正常?

如果您实现本机方法(正确)并加载包含实现的本机库,那么一切正常。

  

我想知道是否容易出错或违反任何好/最佳做法?

不,不,不。

或者至少,与使用本机代码相比,更多错误或更多反“最佳实践”。

顺便说一句,你真的应该阅读James Bach's "No Best Practices" article,然后才能围绕“最佳实践”等狡猾的术语进行调整。

答案 1 :(得分:1)

似乎工作得很好。如果您希望在本机实现之间轻松切换,这是非常酷的解决方案。

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo030

JNI Cookbook中的描述可以让您快速了解解决方案

http://jnicookbook.owsiak.org/recipe-no-030/