とスタックフレームを生成するには、私は頻繁に持っているしたいと思います:どのように動的に優れたデバッグのためのデバッグログ情報
Exception
at com.example.blah.Something.method()
at com.example.blah.Xyz.otherMethod()
at com.example.hello.World.foo()
at com.example.debug.version_3_8_0.debug_info_something.Hah.method() // synthetic method
at com.example.x.A.wrappingMethod()
デバッグスタックフレーム上に示したように、動的除き、ちょうどjava.lang.reflect.Proxy
のように、生成されますプロキシーで終わる完全修飾メソッド名全体を完全に制御したいと思っています。呼び出しサイトで
、私は愚かなと、このような単純なものだろう:あなたが見ることができるように
public void wrappingMethod() {
run("com.example.debug.version_3_8_0.debug_info_something.Hah.method()",() -> {
World.foo();
});
}
を、wrappingMethod()
は、スタックトレースに終わる本当の方法であり、は、動的に生成されます一方、World.foo()
はもう一度実際の方法です。
はい、これは既に深い深いスタックトレースを汚染することがわかります。ご心配なく。私には理由がある。
これを行うには(単純な)方法がありますか?
私はこの分野に非常に精通していませんが、このようなことはバイトコードレベルで行うことができますが、言語で可能かどうかはわかりません。 –
@ Meguy26:JDKの外で特別な依存関係がなくても実装できるのであれば、バイトコードレベルのソリューションはうまくいきます。しかし、私はまた、Bytebuddy –