** Java関連 [#e51718b7]

***文字列[#off8b108]
- 文字列の分割(ピリオドの前後で分割する場合)
-- splitの引数は正規表現であることに注意。わたしの環境ではなぜか"\."でうまくいかず。
 String[] sarray = s.split("\\.");


***配列 [#off8b108]
- 配列のコピー
 System.arraycopy(x, 0, x, 1, x.length-1);

LEFT:
|引数|内容|
|1|もとの配列|
|2|開始位置|
|3|転送先の配列|
|4|転送先配列の開始位置|
|5|コピーされる数|


***パタン [#off8b108]
&aname(callback);
- Javaで(AWTなどとは別に)独自にイベントを発生させる場合~

--事例としては、あるクラスAがメンバとしてスレッドBを持っている。~
ここではスレッドBのクラス名を''CallbackThread''とする。
 public class CallbackThread extends Thread implements Runnable {
  ...
 }
このスレッドBのコードの中の、ある決まったタイミングでイベントを発生させ、これをAに通知させたい。~
これによって、Aの中で、Bと同期して何らかの処理を行わせたい。~
--このとき、まずBの中に、''内部インタフェース''としてリスナーインタフェースを定義し、
 public interface CallbackListener {
  void onCallback(int value);
 }
このインタフェースに対するメソッド(内容はAが決める)を狙いの位置に記述しておく。~
 private CallbackListener callback_B;
 public void run() {
  while(true){
   *.receive(**) ; //通信処理でパケットを受け取るような処理。
   callback_B.onCallback(**.number);
  }
 }
この際、重要となるのが、
実行側のAで宣言する''CallbackListener''のインスタンス''callback_A''と、~
Bの中のローカルインスタンス''callback_B''を関連づける関数を準備しておくこと。
 void setCallbackListener(CallBackListener callback_A){
  this.callback_B = callback_A;
 }
--次に、Aの中では、Bとともに、
Bの内部インタフェース''CallbackListener''のインスタンスを宣言しておく。~
この中で、未定義のメソッドに実際の処理を記述しておくこと。
 CallbackThread thread = new CallBackThread();
 CallbackThread.CallbackListener callback_A = new CallBack(){
  public void onCallback(int value){
   jTextField.setText("value = " + value); //同期させる処理
  }
 };
--最後に、AのリスナをBのリスナに渡して完了。
 thread.setCallbackListener(callback_A);

--ポイントは、''イベントのソース側で内部クラスとしてリスナーインタフェースを定義し''~
''イベントを受け取る側で、リスナーメソッドの中身を定義すること。''~


--参考URL(http://iwatanlab.blogspot.com/2011/04/java.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS