• ベストアンサー

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; } } スマートなやり方を御教授下さい。

  • Java
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • java

    コンパイルできても、実行ができません。 次のようなエラーがでます。 このエラーはどのようなエラーなのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError: test コードはただたんにHello JAVA と表示させるだけです。 class Test{ public static void main(String args[]){ System.out.println("Hello Java\n"); } }

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java
  • Javaの初心者

    次のようなコードを書きました。 public class server{      : public static void main(String args[]){  : } } javac server.javaでクラスは作成されるのですが、 java server とやると could not find the main class: server. Program will exit. というメッセージがでます。どこが間違っているのでしょうか? 初歩的な質問ですみません。

  • Javaのシリアライズについて質問です。

    Javaのシリアライズについて質問です。 以下の二つのコードで実行すると、ちゃんとシリアライズされたデータが生成されるのですが このコードでは実行するたびにデータが上書きされてしまいます。 これを実行するたびに新しいデータを最後尾に追加するような形にしたいのですがどのようにすればいいのでしょうか? よろしくお願いします。 ------------------------------------------------------------------------------- import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.FileInputStream; import java.io.ObjectInputStream; public class Main { public static void main(String[] args) { Data data = new Data(); data.setName("testtesttest"); try { FileOutputStream outFile = new FileOutputStream("data.txt"); ObjectOutputStream out = new ObjectOutputStream(outFile); out.writeObject(data); out.close(); outFile.close(); } catch(Exception ex) { ex.printStackTrace(); } } } ----------------------------------------------------------------------------------- import java.io.Serializable; public class Data implements Serializable { private String name = ""; public void setName( String NameData ) { name = NameData; } } -----------------------------------------------------------------------------------

    • ベストアンサー
    • Java
  • Javaについて教えてください。

    Javaのソースコードで以下のコードを実行すると表示されないのですがなぜでしょうか? public class Sample{ public static void main(String[] args){ for (int i = 0 ; i >= 5; i++){ System.out.println(i); } } }

  •  Exception in thread "main" java.la

     Exception in thread "main" java.lang.StackOverflowError というエラーが出ます  moji()にtestという変数をいれてやり、mainから、書かそうとしていますが、  Exception in thread "main" java.lang.StackOverflowError というエラーが出ますが、何故かわかりません。  宜しくお願いします。 ************************************************************ public class ArgsTest2 { public static void main(String args[]) { moji(); } public static void moji() { String[] test = {"abcde","fghij"}; main(test); } }

    • ベストアンサー
    • Java
  • Javaの初心者です

    Javaの勉強をしています。 以下のコードを作成しました。 import java.util.*; public class Main { public static void main(String[] args) { int flg = 0; Scanner sc = new Scanner(System.in); String str = sc.next(); String data = sc.next(); if (data == str) { flg = 1; } if (flg == 1) { System.out.println("YES"); } else { System.out.println("NO"); } } } 標準入力に A A を入力して実行しました。 YESと表示されるのを期待していたのですが、NOと表示されます。 何が悪いのでしょうか?

    • ベストアンサー
    • Java
  • Javaのクラス作成について。

    現在、Javaで新規クラスを作成しています。 「String型の変数を受け取ってトリミングしてString型で返す」と言うプログラムを作成したいのですが、なかなかうまくいきません。 現在、考えているのは --- Trimming.java --- public class Trimming{ String new_id; public String TrimmingId(String id){ id = new_id; String idtrim = new_id.trim(); idtrim = id; return id; } } --- Test.java --- class Test{ public static void main(String[] args) { String id = " Trimming "; Trimming ID = new Trimming(); System.out.println(ID.TrimmingId(id)); } } --- 現在、出ているエラーは Exception in thread "main" java.lang.NullPointerException at Trimming.TrimmingId(Trimming.java:6) at Test2.main(Test2.java:6) です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaが実行されない

    雑誌を買ってjavaでプログラミングをしているのですが なぜか実行できません。 ツールはteraPadとJDKを使っています。 public class sample { public static void main(String[] args) { System.out.println("hello!"); } } コンパイルし、classファイルを実行すると Exception in thread "main" java.lang.NoClassDefFoundError: sample/class と出て実行できません。結果はhello!となるはずなのですがどなたかどこがおかしいのか教えてください。

    • ベストアンサー
    • Java
  • JavaのArrays.sortについて教えてください

     Javaを勉強している初心者です。 次のプログラムはある学校のある学年の梅組の生徒5人のデータ(出席番号 no、氏名 name、身長 height)を 身長の低い順に並べ替えようとするものです。クラスMainでArrays.sort(ume);を実行するとどんな処理が行われるのか、またクラスStudentのメソッドcompareTo(Object o)はどう関係するのかご教示ください。 import java.util.Arrays; class Student implements Comparable { private int no; private String name; private double height; public Student(int no, String name, double height) { this.no = no; this.name = name; this.height = height; } public int compareTo(Object o) { double h1 = this.height; double h2 = ((Student)o).height; if(h1 == h2) { return 0; } else if(h1 > h2) { return 1; } else { return -1; } } } public class Main { public static void main(String[] args) { Student[] ume = new Student[5]; ume[0] = new Student(2, "木下 薫", 141.5); ume[1] = new Student(5, "湯水 敦", 145.0); ume[2] = new Student(1, "相田 徹", 152.5); ume[3] = new Student(4, "田中 大", 136.0); ume[4] = new Student(3, "橋 航", 145.0); Arrays.sort(ume); } }

専門家に質問してみよう