スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
J2EEパターンは4つの階層からなる。 ただし必ずしも全部使うとは限らない。
J2EEパターン
スポンサーサイト
Javaのインタフェース
Javaのインタフェースについてだ。
Map, Set, List とかは、インタフェースだね。
で、こいつらを実装してるクラスがあるんだが、そんなことは、あまり考えないで、
Map が使いたいなぁ と思ったら、
Map map = new ○○(); と書いておけば大抵OK。

具体例を見てみよう。
ここに、君を作るぞ。そうだ君だ。
interface You {
	  void say();
}

これで君は、何か言えること(sayできる)だけは、決定したんだ。
だが、まだ君がなにを言える(sayできる)かは、決まっていない。

君は、生まれたばかりだとしよう。だから、赤ちゃんの君、BabyYouを作ろうじゃないか。
class BabyYou implements You{
	public void say(){ System.out.println("ばぶばぶ"); }
}

よし、できた。これで準備は万端。君のしゃべる声が聞けるんだ。
public class Main {
	public static void main(String[] args) {
		You you = new BabyYou();
		you.say();
	}
}

君をYouと宣言してるところに注意だ。BabyYouとは宣言してないんだ。
なんでかって? それは君が成長することを見越しているからなんだ。

大人になった君を作ろう。そうだ、君は大人になったんだ。大人な君、AdultYouを作ろう。
class AdultYou implements You{
	public void say(){ System.out.println("大人だ! 大人になったよ"); }
}

よしできた。ついに大人になった君の声を聞いてみようじゃないか。
public class Main {
	public static void main(String[] args) {
		You you = new AdultYou();
		you.say();
	}
}

どうだい? You で宣言していたおかげで、 new BabyYou() のところを、
new AdultYou() に変えるだけで、すんだんだ。
これで、20年先のソースでも改修は、簡単!ってわけさ。

しかし、最後に言っておかないといけないのは、僕はJavaに詳しくないってことさ。
Javaには無名クラスというのがあってだね
Javaには無名クラスというのがあってだね。
上位のクラスをその場で実装して生成するみたいなのができるわけだ。
んじゃ、クラスなんて作らなくても、Objectを継承するかたちで、無名クラスいっぱーい書けばいいじゃん と思ったら、Objectが持ってるメソッドしか実装できないではないか。クラスが型ですからね。

ということで、こういうので我慢する。
私がJava界隈の人間でなくても、もしこういったソースを業務でみたら、どうしようもない怒りを覚えるだろうが。
public class Hoge {
  public static void main(String[] args){
 
	  new Object(){ 
		  public String toString(){ System.out.println("こんにちは");
	      return null; }
	  }.toString();
  }
}
交互にスレッドを動かす方法
んー Javaのことは よくわからんなぁ.......
notifyAll(); って2カ所も書いてるのがダサイのだが、
こういものなのかなぁ
public class Hoge {
  public static void main(String[] args){
	Foo f = new Foo();
	new T(f, "A").start();
	new T(f, "B").start();
  }
}

class Foo{
	public void p(String name){
	  for(int i=0;i<10;i++){
		synchronized(this){
		  System.out.println(name + i);
		  notifyAll();
		  try {
			wait();
		  } catch (InterruptedException e) {
			e.printStackTrace();
		  }
		  notifyAll();
		}
	  }
	}
}

class T extends Thread{
	Foo f;
	String name;
	
	T(Foo f, String name){
		this.f    = f;
		this.name = name;
	}
	
	public void run(){
		f.p(name);
	}
}
Javaにmainメソッドはいらないんですね
public class A {

	static {
		int i = 1;
		i++;
		System.out.println(i);
	}
	
}

結果:
2
Exception in thread "main" java.lang.NoSuchMethodError: main
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

ブロとも申請フォーム

この人とブロともになる

| ホーム | 次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。