2

Java EEの世界を深く研究しています。Java EE が新しい仕様をリリースした後でも、アプリケーション サーバーの製造元は新しいバージョンを発表しました。すべての仕様の実装が Application Server Lib に存在し、コンパイルされた war ファイルにその jar が追加で必要ないことを私は知っています。それに加えて、JAVA EE を開発している間、次の依存関係が必要な Web プロジェクトを言うことができます

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>

javaee-api-6.0.jar を見ると、わずか 957KB、つまりクラス メソッド定義で構成されていることがわかります。

上記で javaee-api-6.0.jar のクラス ファイルの 1 つを逆コンパイルしたという事実により、これがその 1 つです。そうではありません。そして、私が理解したいのは、コンパイラーが次のようなメソッド定義を持つそのようなJavaクラスをどのように許可するかということです:

public ActivationDataFlavor(Class paramClass, String paramString1, String paramString2);

逆コンパイルされたクラス ファイル:

package javax.activation;

import java.awt.datatransfer.DataFlavor;

public class ActivationDataFlavor extends DataFlavor
{
  private String mimeType;
  private MimeType mimeObject;
  private String humanPresentableName;
  private Class representationClass;

  public ActivationDataFlavor(Class paramClass, String paramString1, String paramString2);

  public ActivationDataFlavor(Class paramClass, String paramString);

  public ActivationDataFlavor(String paramString1, String paramString2);

  public String getMimeType();

私のJavaコンパイラは、あなたが期待しているすべてのエラーを出します。 ここに画像の説明を入力

すべてのクラス ファイルがわずか 1KB であるため、Java コンパイラが正しく動作しないとは思いません。 ここに画像の説明を入力

4

1 に答える 1