1

私は何年も .NET を使用してきましたが、最近、Java での単純なプロジェクトに直面しています。構文は簡単に習得でき、非常に単純明快であり、一般的でした。しかし、私を最も混乱させたのは、プロジェクトの構造でした。

.NET では、クラスにさまざまなものを含めることに非常に慣れていますが、Packages混乱します。これらは、実際にプロジェクト ディレクトリ レイアウトに影響を与えることを除けば、.NET 名前空間とほとんど同じように見えます。

それだけでなく、命名規則は私にはまったくなじみがありませんでした。会社のサイトを使用してパッケージに名前を付け、末尾にアプリケーション名を付けるように言われました (例com.company.www.applicationname)。それだけでなく、メインクラスにアプリケーションの名前を付けるように言われました。ほとんど冗長に見えます (クラス名、パッケージ名、およびプロジェクト名)。

それで、これは何についてですか?これらのパッケージを .NET で何と比較できますか? また、これらのパッケージについてどのように理解すればよいでしょうか? - 命名規則はどうなっていますか?

4

1 に答える 1

3

packagesJava では、異なるライブラリが互いに競合することなくクラス名を再利用できるようにする方法です。パッケージは、言語が提供する別のスコープ ルールのようなものです。例えば:

public class Example {
    String exampleString = "example";
}

public class Another {
    String exampleString = "This would never work with a global name space";
}

異なる にあるため、同じプログラム内に識別子を持つ 2 つのStringオブジェクトを含めることができます。同様に、exampleStringscope

package example;
public class Example { }

そして別ファイルで

package separateexample;
public class Example {}

スコープが異なるため、同じ名前のクラス名を持つことができます。オブジェクトを一意に指定できます。

example.Exampleまたはseparaeteexample.Example これらは、これらのクラスの完全修飾クラス名です。

詳細については、Java チュートリアルを参照してください。

Java パッケージの規約について: ライブラリを作成し、それを多くの人に使用してもらいたい場合は、名前の競合がないことを確認する必要があります。上記のようにパッケージを使用してそれらを回避できますが、パッケージ名自体など、何も競合しないようにするために、完全にグローバルに一意のパッケージ名が必要です。あなたの製品を使用してください。ドメイン名はたまたまグローバルに一意の文字列であるため、会社のドメイン名をパッケージ名として逆に使用するのが慣例です。

com.example.myapp.Example

あなたが本当にexample.comを所有している限り、競合することはありません(そして誰も慣習を破りません)

したがって、Javaでの主な質問に答えるには、.Netpackagesと同じ概念ですnamespaces

于 2012-06-27T01:41:43.710 に答える