前書き
Java8 を使用すると、特定のパラメーター情報を表す新しいオブジェクト パラメーターが、その getName を通じて取得できることは誰もが知っています。 , username という名前の場合、フォアグラウンドでパラメーターを渡すときに @Parameter("username") などのアノテーションを記述する必要はなく、名前で直接マッピングできます
以下のコードリファレンスが表示されます。
public class T { private interface T2 { void method(String username, String password); } public static void main(String[] args) throws Exception { System.out.println(T.class.getMethod("main", String[].class).getParameters()[0].getName()); System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[0].getName()); System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[1].getName()); } }java8以前でも何らかの方法でパラメータ名情報を取得できますが、方法は異なります。例えば、spring mvcのParameterMethodNameResolverを介して、以前のバージョンでも正常に動作します。ただし、特別なコンパイルが必要です。ここで機能するのは LocalVariableTable と MethodParameters で、中国語のローカル変数テーブルとメソッド パラメーター テーブルにコンパイルされます。 Code 属性 つまり、methodInfo の属性でもあります。メソッドにメソッド本体がある場合、対応する Code 属性が表示され、code 属性には、特定の実行コードに加えて、 LineNumberTable (コードの各行の位置を記述するために使用されます) などの他の情報です。 ローカル変数テーブルはメソッド内のデバッグ情報の一部であるため、デフォルトではこの情報はクラス ファイルには生成されません。 -g または -g: vars スイッチを有効にする必要があります。幸いなことに、IDE または Maven のコンパイルでは、これらのスイッチはデフォルトでオンになっており、(アイデアのデバッグ情報を生成する) (デフォルトのチェックマーク) を設定することで制御できます。 Maven では、プラグイン maven-compiler-plugin の debug または debugLevel で出力するかどうかを制御します (デフォルト値は true)。以下に示すように、ローカル変数テーブルは javap の後にあります。ローカル変数テーブルはパラメータ情報を保存するだけでなく、宣言された int i などのメソッド本体全体で使用される可能性のある一時変数にも保存されます。そして、上に示したように、式メソッドと非静的メソッドそもそもこの変数には違いがあるので、パラメータの数を取得(method.getParameterCount)して、メソッドのシグネチャに従ってローカル変数テーブル内の指定された数のパラメータ情報を読み込むことができます。 上の図では、パラメータが long または double の場合、そのスロットは 2 つのスペースを占有します。スロットを通じてパラメータ情報を取得する場合、パラメータの型情報を考慮する必要はありません。コード属性を持っているため、ローカル変数テーブルはありません インターフェイスのメソッド定義を取得して渡します ローカル変数テーブルからは対応するパラメータ名を取得できませんMethodParameters メソッドパラメータテーブル メソッドパラメータテーブルは1.8以降に導入されました、したがって、jdk8 を使用してコンパイルされたクラス ファイルのみがこの情報を持ちます。ローカル変数テーブルとは異なり、これは MethodInfo 属性に属します。つまり、インターフェイス メソッドまたは通常のメソッドと同じレベルにあります。この属性を持っているため、たとえインターフェースメソッドであっても、対応するパラメータ情報を取得できます。 デフォルトでは、クラス内にそのような情報は存在せず、それを生成するには特別なコンパイルパラメータ -parameters を使用する必要があります。 IDE と Maven では、この情報はデフォルトでは生成されません。Idea では、このコンパイル パラメーターを Java に追加する必要があります。Maven では、このパラメーターを maven-compiler- の COMPILERARGS パラメーターにも追加する必要があります。プラグインのメソッドパラメータテーブルは、javap 後の形式になります:
//非静态方法 LocalVariableTable: Start Length Slot Name Signature 0 1 0 this LT; 0 1 1 count J 0 1 3 name Ljava/lang/String; //静态方法 LocalVariableTable: Start Length Slot Name Signature 0 101 0 args [Ljava/lang/String;
パラメータテーブルには、静的であるかどうかに関係なく、パラメータを記述するために使用される情報のみが表示されます。次の Flags パラメータは、メソッド書き換えのための最終パラメータなど、いくつかの特別なシナリオで使用されます。
使用できるいくつかのツール
ネイティブの使用に加えて、API、Spring ツールキット、およびその他のツールはパラメータ名情報を取得できますSpring システムでは、パラメータ名を記述するために使用されるインターフェイスは ParameterNameDiscoverer であり、これを通じて、対応するパラメータ名の情報を取得できます。また、このツールキットの Paranamer も対応する情報を処理できます。ただし、jdk8のmethodParametersのサポートはそれほど高くはなく、ユーザーはそれを拡張することで独自の目的を達成できます。
概要 上記は、Javaがコード内のメソッドパラメータ名の情報を取得する方法の概要です。 Java を学習または使用するすべての人に役立ちます。質問がある場合は、メッセージを残して連絡してください。 コード内のメソッド パラメーター名の情報を取得する Java のメソッドに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

jvm'sperformanceiscompetitivewitherruntimes、sped、safety、andproductivityの提供

javaachievesplatformedentenceTheThejavavirtualMachine(JVM)、avainwithcodetorunonanyplatformwithajvm.1)codescompiledintobytecode、notmachine-specificcode.2)

thejvmisanabstractcomputingMachineCrucialForrunningJavaProgramsDuetoitsPlatForm-IndopentInterChitecture.Itincludes:1)ClassLoaderForloadingClasses、2)Runtimedataareaforforforatastorage、3)executionEngineWithinterter、Jitcompiler、およびGarbagecolfecolfecolfececolfecolfer

jvmhasacloserelationshiptheosasittrantesjavabytecodecodecodecodecodecodecodecodecodecodecodecodecodetructions、manageSmemory、およびhandlesgarbagecollection.thisrelationshipallowsjavatorunonvariousosenvirnments、Butalsedentsはspeedifediferentjvmbeviorhiorsandosendisfredediferentjvmbehbehioorysando

Javaの実装「Write and、Run Everywherewhere」はBytecodeにコンパイルされ、Java仮想マシン(JVM)で実行されます。 1)Javaコードを書き、それをByteCodeにコンパイルします。 2)JVMがインストールされたプラットフォームでByteCodeが実行されます。 3)Javaネイティブインターフェイス(JNI)を使用して、プラットフォーム固有の機能を処理します。 JVMの一貫性やプラットフォーム固有のライブラリの使用などの課題にもかかわらず、Woraは開発効率と展開の柔軟性を大幅に向上させます。

javaachievesplatformentenceTheTheTheJavavirtualMachine(JVM)、CodetorunondifferentoperatingSystemswithOutModification.thejvmcompilesjavacodeplatform-IndopentedbyTecodeを承認することを許可します

javaispowerfulfulduetoitsplatformindepentence、object-orientednature、richstandardlibrary、performancecapability、andstrongsecurityfeatures.1)platformendependenceallowseplicationStorunonaydevicesupportingjava.2)オブジェクト指向のプログラマン型

上位のJava関数には、次のものが含まれます。1)オブジェクト指向プログラミング、サポートポリ型、コードの柔軟性と保守性の向上。 2)例外処理メカニズム、トライキャッチ式ブロックによるコードの堅牢性の向上。 3)ゴミ収集、メモリ管理の簡素化。 4)ジェネリック、タイプの安全性の向上。 5)コードをより簡潔で表現力豊かにするためのAMBDAの表現と機能的なプログラミング。 6)最適化されたデータ構造とアルゴリズムを提供するリッチ標準ライブラリ。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい
