package
日本語 | 梱包 |
英語 | package |
ふりがな | ぱっけーじ |
フリガナ | パッケージ |
クラスのパッケージ名を指定するための予約語。
ソースファイルの最初の行で「package パッケージ名;」という形式でパッケージ名を付けることができる。
この記述を行うことで、ソースファイル内のクラスは「パッケージ名.クラス名」というクラス名になる。
また、この記述を「パッケージ宣言」と言う。
クラスをパッケージ毎に分ける場合、まずソースファイルの置いてあるディレクトリを確認する。
「ソースファイルの置いてあるディレクトリ」とは、コンパイルするソースファイルを置いてあるディレクトリのことで、通常、プロジェクトディレクトリ下に「src」というディレクトリ名で作られている。具体的には、Eclipseであれば、各プロジェクトのプロパティの「Java のビルド・パス」ページの「ソース」タブで表示されているディレクトリがそれである。
この「ソースファイルの置いてあるディレクトリ」にさらにディレクトリを作り、その中にソースファイルを置く。
そのソースファイルは、importによるインポート宣言の前に「package パッケージ名;」という形式でパッケージ名を指定する。
パッケージ名は「ソースファイルの置いてあるディレクトリ」からの相対ディレクトリを「.」で継ないだものである。たとえば「ソースファイルの置いてあるディレクトリ」が「project/src/」であれば、「project/src/test/test2/OtherPackageClass.java」クラスのパッケージ名は「package test.test2;」となる。
以上のようにすることで、このクラスは「パッケージ名」パッケージで囲まれる。
OtherPackageClassクラスの例で言えば「test.test2」というパッケージ名が付いた「test.test2.OtherPackageClass」がクラスの完全修飾名となる。
ソースファイルの最初の行で「package パッケージ名;」という形式でパッケージ名を付けることができる。
この記述を行うことで、ソースファイル内のクラスは「パッケージ名.クラス名」というクラス名になる。
また、この記述を「パッケージ宣言」と言う。
クラスをパッケージ毎に分ける場合、まずソースファイルの置いてあるディレクトリを確認する。
「ソースファイルの置いてあるディレクトリ」とは、コンパイルするソースファイルを置いてあるディレクトリのことで、通常、プロジェクトディレクトリ下に「src」というディレクトリ名で作られている。具体的には、Eclipseであれば、各プロジェクトのプロパティの「Java のビルド・パス」ページの「ソース」タブで表示されているディレクトリがそれである。
この「ソースファイルの置いてあるディレクトリ」にさらにディレクトリを作り、その中にソースファイルを置く。
そのソースファイルは、importによるインポート宣言の前に「package パッケージ名;」という形式でパッケージ名を指定する。
パッケージ名は「ソースファイルの置いてあるディレクトリ」からの相対ディレクトリを「.」で継ないだものである。たとえば「ソースファイルの置いてあるディレクトリ」が「project/src/」であれば、「project/src/test/test2/OtherPackageClass.java」クラスのパッケージ名は「package test.test2;」となる。
以上のようにすることで、このクラスは「パッケージ名」パッケージで囲まれる。
OtherPackageClassクラスの例で言えば「test.test2」というパッケージ名が付いた「test.test2.OtherPackageClass」がクラスの完全修飾名となる。
参考サイト
- (参考サイトはありません)
// Sample.java
/*
「ソースファイルを置いてあるディレクトリ」直下の場合、
パッケージを指定する必要はありません。
だから、このソースファイルには「package」がありません。
*/
// test.test2パッケージ内のOtherPackageClassクラスを使用します。
import test.test2.OtherPackageClass;
public class Sample
{
public static void main( String[] args )
{
// OtherPackageClassクラスを使用します。
// importしてあるのでそのまま使えます。
OtherPackageClass otherPackageClass = new OtherPackageClass();
otherPackageClass.output();
// OtherPackageClass#output()
// importしてない場合には以下のようにパッケージ名を
// 省略せずに使用します。
test.test2.OtherPackageClass otherPackageClass2 = new test.test2.OtherPackageClass();
otherPackageClass2.output();
// OtherPackageClass#output()
}
}
// test/test2/OtherPackageClass.java
/**
つまり、このファイルはtest/test2ディレクトリの中にあります。
Sample.javaはtestディレクトリと同階層にあります。
位置関係はこんな感じ。
project/src/Sample.java
project/src/test/test2/OtherPackageClass.java
*/
package test.test2;
// ↑test/test2ディレクトリに置いてあるので「test.test2」です。
// パッケージ名がディレクトリ構成と異なる場合、
// コンパイルエラーになります。
// package test;
// コンパイルエラー:
// 宣言されたパッケージは、予期されるパッケージ test.test2 に一致しません。
/**
* test.test2パッケージ内のクラス。
*/
public class OtherPackageClass
{
/**
* 出力します。
*/
public void output()
{
System.out.println( "OtherPackageClass#output()" );
}
}
// クラスの宣言の下には置けません。
// package test.test2;
// コンパイルエラー:
// キーワード "package" に構文エラーがあります。正しくは "interface", "class" です。
/*
「ソースファイルを置いてあるディレクトリ」直下の場合、
パッケージを指定する必要はありません。
だから、このソースファイルには「package」がありません。
*/
// test.test2パッケージ内のOtherPackageClassクラスを使用します。
import test.test2.OtherPackageClass;
public class Sample
{
public static void main( String[] args )
{
// OtherPackageClassクラスを使用します。
// importしてあるのでそのまま使えます。
OtherPackageClass otherPackageClass = new OtherPackageClass();
otherPackageClass.output();
// OtherPackageClass#output()
// importしてない場合には以下のようにパッケージ名を
// 省略せずに使用します。
test.test2.OtherPackageClass otherPackageClass2 = new test.test2.OtherPackageClass();
otherPackageClass2.output();
// OtherPackageClass#output()
}
}
// test/test2/OtherPackageClass.java
/**
つまり、このファイルはtest/test2ディレクトリの中にあります。
Sample.javaはtestディレクトリと同階層にあります。
位置関係はこんな感じ。
project/src/Sample.java
project/src/test/test2/OtherPackageClass.java
*/
package test.test2;
// ↑test/test2ディレクトリに置いてあるので「test.test2」です。
// パッケージ名がディレクトリ構成と異なる場合、
// コンパイルエラーになります。
// package test;
// コンパイルエラー:
// 宣言されたパッケージは、予期されるパッケージ test.test2 に一致しません。
/**
* test.test2パッケージ内のクラス。
*/
public class OtherPackageClass
{
/**
* 出力します。
*/
public void output()
{
System.out.println( "OtherPackageClass#output()" );
}
}
// クラスの宣言の下には置けません。
// package test.test2;
// コンパイルエラー:
// キーワード "package" に構文エラーがあります。正しくは "interface", "class" です。
// Sample.java /* 「ソースファイルを置いてあるディレクトリ」直下の場合、 パッケージを指定する必要はありません。 だから、このソースファイルには「package」がありません。 */ // test.test2パッケージ内のOtherPackageClassクラスを使用します。 import test.test2.OtherPackageClass; public class Sample { public static void main( String[] args ) { // OtherPackageClassクラスを使用します。 // importしてあるのでそのまま使えます。 OtherPackageClass otherPackageClass = new OtherPackageClass(); otherPackageClass.output(); // OtherPackageClass#output() // importしてない場合には以下のようにパッケージ名を // 省略せずに使用します。 test.test2.OtherPackageClass otherPackageClass2 = new test.test2.OtherPackageClass(); otherPackageClass2.output(); // OtherPackageClass#output() } } // test/test2/OtherPackageClass.java /** つまり、このファイルはtest/test2ディレクトリの中にあります。 Sample.javaはtestディレクトリと同階層にあります。 位置関係はこんな感じ。 project/src/Sample.java project/src/test/test2/OtherPackageClass.java */ package test.test2; // ↑test/test2ディレクトリに置いてあるので「test.test2」です。 // パッケージ名がディレクトリ構成と異なる場合、 // コンパイルエラーになります。 // package test; // コンパイルエラー: // 宣言されたパッケージは、予期されるパッケージ test.test2 に一致しません。 /** * test.test2パッケージ内のクラス。 */ public class OtherPackageClass { /** * 出力します。 */ public void output() { System.out.println( "OtherPackageClass#output()" ); } } // クラスの宣言の下には置けません。 // package test.test2; // コンパイルエラー: // キーワード "package" に構文エラーがあります。正しくは "interface", "class" です。