クラスのインスタンスが以前にインスタンス化されている場合にのみ、FindClass は成功しますか?
いいえ。アプリケーションのクラスローダーが認識しているすべてのクラスが検索されます。インスタンス化されているかどうか。
静的メソッドのみが呼び出され、静的クラス メンバーが使用されている限り、インスタンスは作成されません。Java は、インスタンスの作成が非常に面倒です。静的初期化ブロックが予想よりも遅く実行されても、静的初期化ブロックを取得して、クラスをロードせずに Java で実行するを参照してください。
CallStatic<type>Method
JNI のドキュメントを注意深く読むと、 family がjclass
パラメーターとしてCall<type>Method
取るのに対し、 を受け取ることがわかりますjobject
。この違いがすべてを説明していると思います。
最後に、Java には「使い捨てインスタンス」のようなものはありません。おそらく、スタック上に作成された C++ スタイルのスコープ付きインスタンスについて考えるでしょう。Java にそのように命令することはできません。すべてがヒープに動的に割り当てられ、スコープはガベージ コレクションの参照カウントとスケジューリングによって決定されます。