- 締切済み
interfaceとpackage
パッケージつきのインターフェイスで初期化した文字列を別のJavaファイルで参照したいのですが、コンパイルエラーがでてうまくできません。 インターフェイス(TestI.java) package MyApplet; interface TestI{ String id="bug"; } Javaファイル(TestA.java) package MyApplet; public class TestA{ public static void main(String args[]){ System.out.println(TestI.id); } } 初歩的な質問ですがよろしくお願いします 。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Harry_
- ベストアンサー率55% (36/65)
ranxさん、以前はお世話になりました。(エンコーディングの質問で) ちょっとつっこませてもらいます。 インターフェース内のフィールドは、 暗黙に、public static final です。 だから、質問のコードはどこも間違ってないと 思います。 別な問題じゃないですか。 パッケージとディレクトリがあってないとか。 arusu さん、コンパイルエラーはどんなのですか?
- ranx
- ベストアンサー率24% (357/1463)
インタフェースの内容を次のように修正して下さい。 interface TestI{ static final String id="bug"; } パッケージが同じですからこれで良いと思いますが、 場合によってはpublic宣言子も必要でしょう。 static final ですが、詳細は参考書に譲るとして、 インタフェースの場合は必ず必要になります。
- mrt136
- ベストアンサー率35% (33/92)
どうも、Interface の使い方を勘違いされているようです。 もう一度、Java の入門書等を読まれた方がいいかもしれませんね。 まず、Interface には実態が無いので、TestI.id と言う指定は出来ません。 Interface を implement するクラスを実装して、それを使用します。 それから、static なクラス(又はメンバ)でない限り、クラス名.メンバと言う指定も 出来ないですよ。 後、この様な質問をされる際ですが、エラーメッセージをそのまま書き出す 様にしないと、推測の域を出ない場合がありますので、エラーメッセージは 書くようにしましょう。 がんばってください。
お礼
みなさんありがとうございます。 親ディレクトリからコンパイルを指定すれば無事コンパイルできました。どうもお騒がせしました。