最近、Javaのディープラーニングのソースコードを掘り下げています。そのようなクラスNeuralNetConfigurationがあり、すべてにゲッターとセッターを必要とするフィールドがたくさんあります。ただし、NeuralNetConfiguration.javaソースコードは何も提供していません。
IntelliJでこのプロジェクトを開くと、ctrlはこのクラスの使用法をクリックします。これは主にNeuralNetConfiguration.getNInput()またはNeuralNetConfiguration.getKernelSize()のようなメソッドであり、IDEはすべてのゲッターが含まれるコンパイル済みクラスファイルに移動します。このクラスのフィールドごとに定義されます。
私はJavaの初心者なので、これがどのように行われるのか疑問に思います。私がjavareflectについて見つけた投稿は、独自のクラスローダーを作成しない限り、reflectがメソッドをクラスのメソッドに追加できないことを示唆しています。Javaプロジェクトのディープラーニングを確認しましたが、彼らはそれを行っていないと思います。
時々私も気になりますが、IntelliJは、特にmvnコマンドラインを使用する代わりにIntelliJを使用してプロジェクトをビルドした後、それらのgetFieldsメソッドがソースファイルにまったくないために解決できなかったというエラーを報告し始めます。
魔法はクラスの@Dataアノテーションで起こります。この注釈はProjectLombokからのものです。おそらくどこかに、コンパイルプロセスにフックしてこれらのメソッドを生成するアノテーションプロセッサがあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加