Java

さらにSeasar2を味わいまくってみる。

もっとSeasar2を味わってみる。 - 都元ダイスケ IT-PRESSの続き。さっきのapp.diconって、ちょっとネスト深くて見通し悪いよね〜。 その前にまず、いい加減パッケージ分けしましたw こんな感じで。 そしてapp.diconの見通しを良くしてみた。 <components> </components>

もっとSeasar2を味わってみる。

DIのお話を書いてみる。 - 都元ダイスケ IT-PRESSの続きです。まずは、Tableクラスをちょっと変えちゃいましょう*1。 import java.util.List; public class Table { public String name; public List<Column> columns; public Table(String name) { this.name = name</column>…

DIのお話を書いてみる。

まず。この物語はフィクションであり このエントリ上のコードはあくまでもチュートリアル用のコードであり、実用性に関しては(ryという訳で、id:happy_ryoのリクエストにお応えして、DIのお話。Seasar2を使ってみます。ポリモーフィズムの例をもうちっと…

ポリモーフィズムの例をもうちっと実用的に書いてみた。

参照元を書き忘れて、トラバが飛んでなかった。元ネタはこちら。http://d.hatena.ne.jp/j5ik2o/20080508/1210246936 Jiemamy作者っぽく、テーブルデータをSQLに変換するプログラムを例に。 モデル 複雑にしないために、わざとpublicフィールド。 import java…

Q4E 0.6.x

にアップデートすると、pomに因縁をつけるようになっていた。今までうまく動いていたし、コマンドラインのmvnはしっかり動くのになぜだろう... としばらく悩んでいた。 どうやら、plugins/plugin/version に RELEASE というバージョン指定をしていたのがアレ…

ちょっとtwitterで話題になったこと。

Javaのfinalというのは、その変数の参照先が変わらない(参照先が別のオブジェクトに切り替わらない)というだけで、参照先に存在するオブジェクト自体のステート不変は保証されていない。 final FooBean bar = new FooBean(); bar.setBuz("hoge"); // エラ…

クラスローダをまたがったモデルのコンバート

2つのモデルクラスがあったとします*1。 model-1.jar package com.example.a; public class Model { public int id; public int foo; public String string; public Model child; } model-2.jar package com.example.b; public class Model { public int id;…

nekopマジック

import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.Date; import org.jdom.Document; import org.jdom.input.SAXBuilder; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; imp…

XMLのパースがおそーい><

これだけのHTMLをパースするのに10秒かかる。jdomとdom4jを試したがどちらも同じ。ということは俺がオカシイ事をしているはずなのだ。恐らくdtdをダウンロードとかしちゃってるんじゃないかなぁ、毎回。そりゃ時間かかるだろうけど…。なんとかキャッシュする…

WakeUp Alarmをコミット。

ひどい設計の目覚まし時計プログラムを作った。 自分しか使わないと思って、本当にひどい設計だ。。 http://twitter.com/daisuke_m/statuses/730547202 @daisuke_m CodeRepos で公開の流れですね! http://twitter.com/akr/statuses/730572272 というわけで、…

って、これダメじゃね?

先のエントリーの続き。 マップがこのキーのマッピングを保持していない場合は null を返します。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/Map.html#get(java.lang.Object) これは、java.util.Map インターフェイスの仕様な訳で…

ジェネリクス使ったメソッドのオーバーライド

Mapの仕様では、get時に対応する値が存在しない場合はnullを返すことになっている。しかし、valueがStringなMapの時、「nullは勘弁。空文字列で返してくれると嬉しい」なんて思う時もありますよね。そこで、こんな事をしてみようと思った。 Map<String, String> foo = new Ha</string,>…

JavaEE5仕様

JavaEEの仕様って、名前も知らなかったり、名前と仕様が結びつかずに知らずに使っていたり、なんとなーく知ってるつもりで使ってたり…。つまり中身全然知らないんですよw ServletとかJSPのインターフェイスくらいまでは大ざっぱにですが把握してる程度…。そ…

final厨(=自分w)に関する考察

Introduction 〜 問題提起 Java魂―プログラミングを極める匠の技作者: Robert Simmons Jr.,福龍興業,佐藤直生,木下哲也,石井史子出版社/メーカー: オライリージャパン発売日: 2004/10メディア: 単行本購入: 10人 クリック: 157回この商品を含むブログ (82件)…

美しくオーバーロード

public void method(final String data1, final String data2) { // ... } public void method(final String data1) { method(data1, null); } こんなオーバーロードって、よくやる手ですよね。可変引数のような使い方です。 ところで、以下のような場合(「…

@Overrideの姉弟。

@Override アノテーションってあるじゃないですか。「オーバーライドの対象である」という意図をコンパイラに明示するもので、メソッド名のtypoや引数型のミスを指摘してくれる、便利なアノテーションです。このアノテーション、好きです。愛してます。ただ…

スマートなDeepCopy

ディープコピー import org.apache.commons.lang.SerializationUtils; public SampleBean deepCopy(SampleBean src) { SampleBean dest = (SampleBean)SerializationUtils.clone(src); return dest; } コピーするクラスは、java.io.Serializable を実装して…

final厨

先日読んだ「Java魂―プログラミングを極める匠の技」ですが。超要約としては「finalはよいぞ。バグを出さないためにはとにかくfinalだ。」って内容だったのですが。今作っているプラグインのソースに、Chekcstyle, FindBugs, PMD をかけてみたら、うるさいう…