-1

タイトルがすでに言っているように、Eclipseを使用してJavaでクラスに別のファイル名を与えることがどういうわけか可能かどうか知りたいですか?

編集:Eclipseで可能かどうかだけ知りたいです。答えがわからない場合は、下品な答えで答えたいという衝動に抵抗してください。

Edit2:ここでどんな反応が返ってくるのかはおもしろいです。私が知りたかったのは、異なるファイル名のクラス(そして私はパブリッククラスを意味します)を持つことが可能かどうかだけです。これはこういう質問をするようなフォーラムだと思いましたが、2回目の回答はすでに侮辱でした。これはある種のタブーの質問ですか、それとも何が起こっているのですか?

4

5 に答える 5

7

ファイル名は常にクラス名、ストーリーの終わりと一致する必要があります。JLSは、実行する必要があることを具体的に述べていませんが、その決定を行うのはコンパイラーの実装に任されています。ほとんどの場合(すべてではないにしても)、その標準との違いは認められないと確信しています。

JLSは次のように述べています。

パッケージがファイルシステム(§7.2.1)に保存されている場合、ホストシステムは、タイプ名とタイプ名で構成される名前のファイルにタイプが見つからない場合、コンパイル時エラーであるという制限を適用することを選択できます。次のいずれかに該当する場合は、拡張子(.javaや.javなど)。

  • 型は、型が宣言されているパッケージの他のコンパイル単位のコードによって参照されます。
  • タイプはパブリックとして宣言されます(したがって、他のパッケージのコードからアクセスできる可能性があります)。

この制限は、コンパイル単位ごとに最大で1つのそのようなタイプが存在する必要があることを意味します。この制限により、Javaプログラミング言語のコンパイラまたはJava仮想マシンの実装は、パッケージ内の名前付きクラスを簡単に見つけることができます。たとえば、パブリックタイプwet.sprocket.Toadのソースコードは、ディレクトリwet / sprocketのファイルToad.javaにあり、対応するオブジェクトコードは、同じディレクトリのファイルToad.classにあります。

したがって、Eclipseでファイル自体の名前を変更したり、ファイルシステムの名前を変更したりできる場合でも、コンパイルエラーが発生する可能性が高くなります。

于 2012-02-21T08:04:16.520 に答える
3

なぜそうしたいのかわかりませんが、シンボリックリンクを使用してコマンドラインからファイルをコンパイルすれば可能です。

class YourClassファイルに保存したとしましょうOtherName.java。このようにそのファイルへのシンボリックリンクを作成する場合:

UNIXシステム:(確かにSolarisでは動作しません-他のシステムは検証されていません)

ln -s OtherName.java YourClass.java
javac YourClass.java

WINDOWSシステム: (WindowsVista / 2008以降で動作します)

mklink YourClass.java OtherName.java
javac YourClass.java

コンパイラは型を見つけてコンパイルが機能します...


このソリューションはUnixシステムでは検証されていませんが、Windows Vista/2008以降では確実に機能します。

于 2012-02-21T08:23:31.090 に答える
1

Eclipseには、Javaプログラミング言語の命名規則または規則とは何がありますか?Eclipseは単なるIDEであり、Javaを使用している場合は、そのルールに従う必要があります。

X.javaファイルがあるとしましょう。これはpublic / abstract / final class named X、このファイルに含めることができるのは1つだけであることを意味します。クラス名としてファイル名を保持するクラスが1つしかない限り、クラスの数とその名前、および相互のネスト関係に制限はありません。クラスがファイル名を取得する場合、次の修飾子が1つ以上含まれている必要がありますpublic, static, final.。これがストーリーです。

于 2012-02-21T08:07:57.677 に答える
1

いいえ、Javaパブリッククラスとファイルは同じ名前である必要があります。

クラスに別の名前を付けようとすると、コンパイラは次のように失敗します。

class YourClass is public, should be declared in a file named YourClass.java

ただし、パブリッククラスを含むファイルで追加のプライベートクラスを宣言できます。

于 2012-02-21T08:08:01.787 に答える
1

以下は、異なるクラス名を持つことができる状況です。

1.classはパブリッククラスではなく、少なくとも1つのパブリッククラスが定義されているJavaファイルに存在します

class notpublic{

}
public class PublicClass {

}

2.ClassはInnerClassです。

public class PublicClass {

        class InnerClass{

        }
    }
于 2012-02-21T08:38:00.720 に答える