• ベストアンサー

java で #include

Cでいう、#include をjavaでしたいのですが、何か手はありませんか? 例えば、 in hogehoge.java public class hogehoge { #include "hogehoge.h" コード一杯 } in hogehoge.h private static String=データ一杯 みたいなイメージです こんな感じも可能かな? in hogehoge.java public class hogehoge { public static main() { String hogedata[][]=hogehogedata.hogehogedataget(); } } in hogehogedata.java public class hogehogedata { private static String hogehogedata_all[][]=データ; public static String hogehogedataget() { return hogehogedata_all; } } スマートなやり方を御教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.3

Javaに#includeはありませんが、必要を感じたことはないですね。 この場合、こんな感じでいいのではないでしょうか? public class HogeData {   public static String HOGE_DATA = { "HOGE", … }; } public class Hoge1 {   public static void main(String[] args) {     for(int i = 0 ; i < HogeData.HOGE_DATA.length ; i++) {       System.out.println(i + "=" + HOGE_DATA[i]);     }   } }

kan_chan
質問者

お礼

やっぱりクラス分けしかないかな。 長ったらしいデータ定義とかが混じるとソースの視認性を 損ねるので欲しいとこではあります。

その他の回答 (2)

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.2

 こんにちは。  私はC++をちょっとかじっただけなので、include文は、ぼんやりとしか理解していないのですが、今回、おっしゃっているのは、例えば、 public class Test1 {   String[] baseballPlayerName = {"太郎", "次郎", "三郎", "四郎", "五郎", "六郎", "七郎", "八郎","九郎"};      public static void main(String[] args) {     Test1 test = new Test1();     test.printAllPlayers();   }      public void printAllPlayers() {     for (int i = 0; i < baseballPlayerName.length; i++)       System.out.println(baseballPlayerName[i]);   } }  このプログラムの String[] baseballPlayerName = {"太郎", "次郎", "三郎", "四郎", "五郎", "六郎", "七郎", "八郎","九郎"};  この部分を毎回書くのがめんどくさいってことでいいですか?  私でしたら、こんな風に書いてしまいます。  スマートかどうかはわかりません。 public class Test2 {   BaseballPlayers players;      public static void main(String[] args) {     Test2 test = new Test2();     test.printAllPlayers();   }      public Test2() {     players = new BaseballPlayers();   }      public void printAllPlayers() {     for (int i = 0; i < players.name.length; i++)       System.out.println(players.name[i]);   } } public class BaseballPlayers {   String[] name = {"太郎", "次郎", "三郎", "四郎", "五郎", "六郎", "七郎", "八郎","九郎"}; }  質問の意図を勘違いしていたら、すみません。

kan_chan
質問者

お礼

面倒臭いのではなく、そこでしか使わない汎用性のないデータ定義等を、 ファイル分けしたいんです。

回答No.1

1番スマートなのは ・javaの入門書を買って、1からちゃんんと勉強する。 ですね。 おそらく質問内容が ・他のクラスを参照するにはどうするのか? ということだと思われるので、そういうことだと思って回答します。 import文(文なのか?)を使います。 Aクラスから他のクラスを参照する場合、 Aクラスと同じパッケージにあるクラスを参照する場合はimportしなくても参照できます。 Aクラスと違うパッケージにあるクラスを参照する場合は package hoge; import hoge.hoge2.B;//hoge.hoge2パッケージのBクラスをインポート public class A{  B b = new B();//インポートしたBクラスのインスタンス } またインポートしなくても、クラス内でパッケージごと宣言する方法もあります。 package hoge; public class A{  hoge.hoge.B b = new B();//パッケージごと宣言 } それから、インポートしても実際にクラスパスにインポートしたクラスがなければコンパイルできません。 また、コンパイル時にはあっても、実行時になければ実行時エラーが起きます。 あっ、あと、 import hoge.hoge2.B; を import hoge.hoge2.*; とすることもできます。この場合はhoge.hoge2パッケージ以下の全てのクラスをインポートします。 (インポートしなくてもいい無駄なクラスも全てインポートしている。) クラスですので、パッケージはインポートできません。 hoge.hoge2.B hoge.hoge2.hoge3.C の場合に import hoge.hoge2.*; としてもhoge.hoge2.hoge3.Cクラスはインポートされてないので別途インポートする必要あり。

kan_chan
質問者

補足

>・javaの入門書を買って、1からちゃんんと勉強する。 >ですね。 ない物は載ってもいないでしょう。 >おそらく質問内容が >・他のクラスを参照するにはどうするのか? >ということだと思われるので、そういうことだと思って回答します。 ちゃいます。 わざわざクラス分けせずにソースファイルを分けたいだけです。

関連するQ&A