ラベル Java入門 の投稿を表示しています。 すべての投稿を表示
ラベル Java入門 の投稿を表示しています。 すべての投稿を表示

2024-05-24

javacコマンドで複数のjavaファイルを同時にコンパイルしたい

 

複数のjavaファイルを同時にコンパイルしたい場合は、javacコマンドの引数に複数のjavaファイル名を書いていくだけですが、数が多くなると面倒です。

よって、以下の通り、findコマンドとの組み合わせ技で解決します。

javac $(find <ここにトップディレクトリ名を書く> -name "*.java")


2011-06-29

[Java]XMLプログラミング ~XMLの読み込み方法の整理~

今日も初歩的な話。XMLを解析する際に、どうやってXMLを読み込ませるかという方法です。具体的には、どうやってXMLデータをDocumentクラスに格納するのか?ということになります。状況として、下記の3つが考えられます。
  1. XMLが記述されたファイルを読み込む場合
  2. XMLデータをStreamから読み込む場合
  3. すでにStringクラスにXMLデータが入っている場合
しかし、いずれの場合も同じく、parseメソッドを用います。
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder db= domFactory.newDocumentBuilder();
    //ファイルから読み込む場合
    Document doc = db.parse("C:\\temp\\TestSample.xml");
    //Streamから読み込む場合
    Document doc = db.parse(is); //isはInputStreamの変数
    //String変数から読み込む場合
    Document doc = db.parse(new InputSource(new StringReader(xml)));  //xmlはString変数         


2010-10-01

無名クラス、匿名クラスを理解する

GWTのRPCを利用するときに、無名クラスの記述がでてきます。Javaに慣れていない人にはわかりにくいところですので、無名クラスについて取り上げます。
例えば、以下のようなインタフェースが定義されていたとします。このインタフェースには2つの抽象メソッドが定義されています。抽象メソッドですので、定義されているのは名前だけで、実際の内容は実装するクラスで書く必要があります。
interface Callback {
  void onSuccess();
  void onFailure()
}
つづいて、このインタフェースを実装するクラスを作成します。必ずCallbackインタフェースで定義されているメソッドを定義しなければなりません。
class TestImpl implements Callback{
  void onSuccess(){
   //ここに何かかく
  }
 void onFailure(){
   //ここに何かかく
  }
}
そして、実際に利用するときには、下記のように書くことになります。
このようにクラスのインスタンスを生成することで、onSuccess等のメソッドを呼び出すことができます。
Callback test = new TestImpl();//あるいは右のような書き方でもよい TestImpl test = new TestImpl();
test.onSuccess();
上記のクラスを宣言する手間を省けるのが無名クラスです。以下のように省略することができます。
Callback test = new Callback{
  void onSuccess(){
   //ここに何かかく
  }
 void onFailure(){
   //ここに何かかく
  }
}
何が省略されているかわかりますか?インタフェースクラスは、直接newすることはできませんが、このようにnewしながら中身を定義することで、newされるものは Callbackインタフェースを実装した何か?(つまり無名のクラス)になります。だから、インタフェースで受け取ることができます。