→ http://fuunyan.blogspot.jp/2012/09/blog.html
インナークラスについて勉強中
↓
アクセス制御について再度確認
↓
パッケージ部分について再確認するためにコード書いてみる
↓
見事にハマって実行できないorz ← 投稿の原点
こんな流れでパッケージの書き方、ファイルの置き方どうすればいいのか正しくわからなかったので、いろいろ調べた結果を書き出しておく。
なお私の環境はカレントディレクトリとして D:\Data\java 、システム環境には JAVA_HOME は定義していますが CLASSPATH は定義していません。
D:\Data\java>set JAVA_HOME
JAVA_HOME=C:\Java\jdk1.7.0_07
D:\Data\java>set CLASSPATH
環境変数 CLASSPATH が定義されていません
●定義方法と格納場所
パッケージの作成と言うのは別にむずかしいことはない。
普通にコーディングをしてコンパイルをすればいいだけです。
注意するのは以下の部分
・ファイルの先頭でキーワードを宣言する。
hoge.java
// hoge はパッケージ名です、これが必要
package hoge;
public class testPackage{
public void show(){
System.out.println("testPackage Message");
}
}
・キーワードと同じ名称のフォルダーにファイルを格納する
たとえば上のキーワード宣言をしているファイルを格納するなら hoge フォルダーに入れること。
とりあえずこれだけ。
細かいことを言うとフォルダー名とかはコンパイルオプションでなんとかなりそうですが、一意性の保証など諸々の理由から、イレギュラーな手法については考えず、この方法を利用した方がいいでしょう。
ちなみに個別にコンパイルも当然できますが、呼び出し元をコンパイルすることで関連するパッケージファイルも勝手にコンパイルされるようです。
●呼び出し元での記述方法
さて呼び出し元。
こちらも難しい事はありません。
普通に java のコーディングができるなら、いつも通りコードを記述していくだけです。
hogecall.java
class hogeCall{
public static void main(String[] ages){
hoge.testPackage tp = new hoge.testPackage();
tp.show();
}
}
ちなみに hoge の記述を省略したいのなら hoge をインポートしてしまうことで実現できます。
import hoge.*;
class hogeCall{
public static void main(String[] ages){
testPackage tp = new testPackage();
tp.show();
}
}
●具体的な配置
上記二つのファイルの具体的な配置は以下の通り。
+カレントディレクトリ
|hogecall.java
+hoge
|hoge.java
こんな感じです。
カレント配下に hoge ディレクトリ
あとはカレントに hogecall.java 、hoge ディレクトリ内に hoge.java を配置するだけです。
この状態で hogecall.java をコンパイルすれば、ちゃんとメッセージが表示されるはずです。
D:\Data\java>javac hogecall.java
D:\Data\java>java hogecall
testPkgMain Message
実は本題のアクセス制御やらの確認ができていないのですが、まぁ次回にでも。
0 件のコメント:
コメントを投稿