13
いくつかのネイティブメソッドを通常のJavaメソッドとして書き直しています。ネイティブJavaメソッドは静的Javaメソッドと同等ですか?
効果的なネイティブメソッドはありますか?あるいは、暗黙的な「this」パラメータを持つケースがありますか?
ありがとうございます!
いくつかのネイティブメソッドを通常のJavaメソッドとして書き直しています。ネイティブJavaメソッドは静的Javaメソッドと同等ですか?
効果的なネイティブメソッドはありますか?あるいは、暗黙的な「this」パラメータを持つケースがありますか?
ありがとうございます!
通常のJavaメソッドと同様に、ネイティブメソッドはstatic
または非static
です。
非static
ネイティブメソッドは、代わりにcontaingクラスへの参照を受け取ります。参照、static
JNI Specificationから
:
ネイティブメソッドの引数
JNIインタフェースポインタは、ネイティブメソッドの最初の引数です。 JNIインタフェースポインタの型はJNIEnvです。 2番目の引数は、ネイティブメソッドが静的か非静的かによって異なります。非静的なネイティブメソッドの第2引数は、オブジェクトへの参照です。静的ネイティブメソッドの2番目の引数は、そのJavaクラスへの参照です。
なぜ「this」を使用していますか?あなたはメソッドを分割し、 'this'を必要としない部分を実装することができます。 (つまり、最も基本的な関数をネイティブコードで実装できます) – shuangwhywhy
'static'キーワードは' native'メソッドにも適用されます。だから...いいえ...静的なものだけが事実上静的です。 –
ネイティブメソッドの中にあなたの関数内にあなたが望む任意の命令を自由に持つことができるので、 'this'について気にする必要はありません。 – Francis