問題タブ [javap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java & Javap: Invokevirtual を受け取るオブジェクトを判別する方法
私はJavapの出力を見ています。例えば:
このコード
生成:
したがって、この場合、オブジェクトは によって識別されることがわかりますval$foo
。そして、クラスのメタデータで
しかし、今は元のオブジェクトについてもっと知りたいと思っていますfoo
。たとえば、フィールドの 1 つに次のデータがあることがわかっています。
JVM はどのようにして何val$foo
を指しているのかを知ることができますか?
java - Javaプログラム内でJavapコマンドを使用できますか?
メソッドの呼び出し方法を追跡できるプログラムを作成する必要があります。そのため、メソッド呼び出しを追跡してフォローアップするために、invokestatic、invokevirtual、invokeinterface、invokespecial を使用しようとしています。
そのためには、(javap -c sample) [sample はクラス] の結果をプログラムに入力する必要があります。
だから私の質問は、 (javap -c sample) の結果ファイルを入力するのではなく、クラス名を sample として入力するだけで、プログラムはプログラム内で javap を実行するファイルを作成し、結果を特定のファイル 、残りのプログラムは通常どおり実行できます。
java - javap を使用して、バイトコードのどの行が Java コードの行に対応するかを確認する方法は?
私は、特定のベクトルの大きさを計算し、それjavap -c
を分解するために使用する方法を作成することを任されました。
ここで、マグニチュード フレームの各ローカル変数が Java で対応するものと、バイトコードのどの行が何に対応するかを示す必要があります。
これが私が作った方法です:
を使用した結果は次のjavap -c
とおりです。
java - JAVAのjava.sql.DriverManagerで初期化されたメソッドgetDriverはどこにありますか?
私はsqlパッケージのクラスを通過していました。そして、たまたま「javap DriverManager.class」で DriverManager.class のメソッドを調べました。私が間違っていなければ、Driver class-get Driver のメソッドを示しています。(私を訂正し、私が正しい場合は正しい情報を教えてください)。今、私は Driver.class を調べましたが、そのメソッドが見つかりませんでした。それはどこに保存されていますか?よろしくお願いします。画像添付!!
java - Javaコンパイラにシンボリック定数フィールド参照をクラスファイルに含めさせます - 可能ですか?
Java コンパイラがコンパイル時に他のクラスから定数フィールド値を取得することはよく知られています。結果のクラス ファイルには、そのような定数の (任意の型の) 定数プール エントリは含まれません。
Q: コンパイラにそれを行うように指示できますか? (Oracle JDK 7 がいいでしょう)
out.println(some.other.class.FOO)
例として、 FOO (たとえばpublic static final int FOO = 1234
) を読み取り、それを出力するコードを考えてみ
ましょう。問題なく参照を見つけることができますprintln
が、定数は匿名に変わりsipush 1234
ます。
クラス レベルの依存関係の分析では、ここで透明性を確保できれば素晴らしいことです。変更された値を依存コードに何らかの形で表示するように求めているわけではないことに注意してください(それに関する他のSOの質問の負荷を参照してください)...
javac への Java Compiler API プラグインについて考えていますが、それは少し大げさなように聞こえますか? 何か案は?
java - Javaの内部クラスと外部クラスの関係?
これは私の Book.java コードです
準拠して使用するとjavap
、2つのクラスで次のことがわかりました
為にBook$BookReader.class
これは出力コードです
私の質問は、ここで参照を行うときにfinalが追加される理由と、この参照が作成された理由です。内部クラスでの使用は何ですか?
為にBook.class
変数に static が追加された理由と、ここで Book がパラメーターとして渡された理由は?
できれば簡単な言葉で説明してください!
java - Javaの内部静的クラス内のコンストラクタ?
次のコードを書きました
取得したコンパイル済みコードで Java クラス ファイル逆アセンブラー javap を使用したとき
私の質問は、 ReaderFound は静的クラスであるため、どのようにデフォルトのコンストラクターを持つことができますか? もしそうなら、なぜですか?許可されていますか?
静的にすることができないため、クラス Reader1$ReaderFound 内にあるコンストラクタの種類が許可されている場合。(また、コンストラクターはオブジェクトを初期化するために暗黙的に呼び出され、ReaderFound は静的クラスであるため、そのオブジェクトはありません。最初の質問に対する私のポイント)
java - JAVAのクラス形式でフィールドのフラグなしとはどういう意味ですか?
コードのスニペットは次のとおりです。
ローカル クラスを作成して、ローカル クラスの変数に対する修飾子がコンパイラから書き込まれていない場合にどのようなアクセス修飾子が取得されるかを確認しました。
これは私がJAVAPで得たものです
基本的にフラグフィールドは空白のままなので、この変数がどのようなアクセス修飾子を取得するのか混乱しています
追加する
private int a=10;
かpublic int a=10;
取得する場合
また
では、デフォルトで取得されるアクセス修飾子の種類は何ですか?