2013-03-06 25 views
13

いくつかのネイティブメソッドを通常のJavaメソッドとして書き直しています。ネイティブJavaメソッドは静的Javaメソッドと同等ですか?

効果的なネイティブメソッドはありますか?あるいは、暗黙的な「this」パラメータを持つケースがありますか?

ありがとうございます!

+1

なぜ「this」を使用していますか?あなたはメソッドを分割し、 'this'を必要としない部分を実装することができます。 (つまり、最も基本的な関数をネイティブコードで実装できます) – shuangwhywhy

+2

'static'キーワードは' native'メソッドにも適用されます。だから...いいえ...静的なものだけが事実上静的です。 –

+0

ネイティブメソッドの中にあなたの関数内にあなたが望む任意の命令を自由に持つことができるので、 'this'について気にする必要はありません。 – Francis

答えて

23

通常のJavaメソッドと同様に、ネイティブメソッドはstaticまたは非staticです。

staticネイティブメソッドは、代わりにcontaingクラスへの参照を受け取ります。参照、staticJNI Specificationから

ネイティブメソッドの引数

JNIインタフェースポインタは、ネイティブメソッドの最初の引数です。 JNIインタフェースポインタの型はJNIEnvです。 2番目の引数は、ネイティブメソッドが静的か非静的かによって異なります。非静的なネイティブメソッドの第2引数は、オブジェクトへの参照です。静的ネイティブメソッドの2番目の引数は、そのJavaクラスへの参照です。

関連する問題