「一気に最後まで読んだ」本、教えて下さい!

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;
}
}

スマートなやり方を御教授下さい。

A 回答 (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]);
    }
  }
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/25 00:23

 こんにちは。



 私は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 = {"太郎", "次郎", "三郎", "四郎", "五郎", "六郎", "七郎", "八郎","九郎"};
}

 質問の意図を勘違いしていたら、すみません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/25 00:23

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クラスはインポートされてないので別途インポートする必要あり。

この回答への補足

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

補足日時:2005/04/25 00:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!