enumでインターフェースの実装は可能のようだ。
enumは継承できない。
enum Base {
HELLO
}
enum Sub extends Base {
WORLD
}
Test0.java:7: '{' がありません。
enum Sub extends Base {
じゃEnum<?>で統一的に、
enum Base {
HELLO
}
enum Sub {
WORLD
}
public class Test1 {
static void foo(Enum<?> e) {
if (e == Base.HELLO) {
System.err.println("Hello");
}
else if (e == Sub.WORLD) {
System.err.println("World");
}
}
public static void main(String[] args) {
foo(Base.HELLO);
foo(Sub.WORLD);
}
}
Test1.java:13: 型 java.lang.Enum<capture of ?> と Base は比較できません。
if (e == Base.HELLO) {
Objectで受ければいいんだけど、そうすると何でも渡せちゃうしな〜、と思ったら、言語仕様書第三版を見ると、
EnumDeclaration: ClassModifiers(opt) enum Identifier Interfaces(opt) EnumBodyなので、インターフェースを実装するのはokなのか。
interface HelloWorld {
}
enum Base implements HelloWorld {
HELLO
}
enum Sub implements HelloWorld {
WORLD
}
public class Test2 {
static void foo(HelloWorld e) {
if (e == Base.HELLO) {
System.err.println("Hello");
}
else if (e == Sub.WORLD) {
System.err.println("World");
}
}
public static void main(String[] args) {
foo(Base.HELLO);
foo(Sub.WORLD);
}
}
これならok。
$ java -cp . Test2 Hello Worldswitch文が使えないのが口惜しいけど、あれはordinalを利用しているものだから、別クラスにしてしまったらswitchサポートしたって内部的にはelse ifで実装せざるを得ないだろう。
あ、そうか。継承を許すとordinalの処理が面倒になるな。継承enumが作成された後に、親enumに定数が加えられてしまって継承enumの再コンパイル無しに実行されてしまうと、ordinalがダブって奇妙な動きを引き起こしてしまいそうだ。それでサポートされていないのかな。
オフショア
なんか「書面区分」が「畫面區分」とか。まぁ読めるからいいか。日本では、ほとんど日本人だから、ちょっとした事にも気になるけれど、多分アメリカだと色んな人種が入ってきてるから、こういうのって、かなりいい加減なんだろうな。で、いい加減でも何とかなる社会になってるし、人々もこまかいことを気にしない。冗長性が高いってことか?!
min()
BigDecimal.min(BigDecimal)の説明は、
Returns the minimum of this BigDecimal and val.
なので「小さい方」を返すという言い方になっている。そうすると「じゃぁ、等しかったらどうなるの?」となるのは自然な流れで、
If they are equal, as defined by the compareTo method, this is returned.
thisが返ると言っている。でも値が等しい場合には、どっちを返したっていいわけなんだから、thisが返るって事をAPI仕様として明示してしまうのはどうかという気がする。
「大きくない方を返す」と書いておけば良かったのにね。
くるみ割り人形
今日は、鎌倉までくるみ割り人形を見に。
ちょっと早めにいって猫寺浄妙寺へ。

20D EF-S10-22mm@22mm F11 1/100 ISO100
今日も、出迎えてくれました。

20D EF-S10-22mm@22mm F5.6 1/100 ISO400
冬の浄妙寺。

20D EF-S10-22mm@10mm F10 1/160 ISO100
さすがに冬なので花はほとんど無し。

20D EF70-200mm IS@200mm F4.0 1/800 ISO400
もう水仙が。

20D EF70-200mm IS@148mm F4.5 1/800 ISO100
お昼は左可井へ。

20D EF70-200mm IS@160mm F8.0 1/400 ISO400
からすうりが飾ってあった。もう12月なのに。

20D EF-S10-22mm@10mm F4.5 1/20 ISO800
そして、くるみ割り人形を見に。中庭の竹を。

20D EF-S10-22mm@12mm F7.1 1/60 ISO400
なぜか意味も無くシャンデリア。

20D EF70-200mm IS@70mm F7.1 1/100 ISO400
サンタを追え
artonさんとこを見て、そういえば、そんな話があったなぁと。それで今年はGoogleの 表紙にHappy Holidaysとあるんだと納得(各国語で書いてあるけど日本語だとなんなんだろう。っていうかこの時期、日本では大した連休でもないのに"Holidays"といわれてもなぁ、Thanks Givingとかで連休取ること自体に宗教色は無いんだろうか)。
といいつつ、同じGoogleでサンタを追えなんてのもあったりして。サンタクローズは宗教色無いんだろうか。よくわからん。
"a SQL" or "an SQL"?
Googleさんに聞いてみると、
a SQL: 2,050,000件an SQL: 1,840,000件
「シークェル」派の方が「エスキューエル」派より優勢か。
またLiveCamが止まってた。
またreadループで止まってた。
while ((readLength = is.read(buf)) != -1) {
このループで先に進まなくなっている。どうもスタックトレースを見るとblockedではなくてready to runなので、readLengthが0になっているっぽい。そういえば仕事でもこの現象にはまった事があった気がする。あの時は生ソケットだったけど。とりあえずループの中で自分でタイムアウトチェックを入れて様子を見てみる。
電波時計
さっき書いたのにな〜。消えちゃったよ。バグだろうか。
昔、ここで話題にした電波時計、画面がおかしくなって結局買い換えたのだけど、電池の部分をいじると動くので、だましだまし使っていた。今日、とうとうどうにもならなくなって、アラームもセットしていないのにピーピー悲鳴を上げ出したので、分解してみた。
結局原因は半田不良。電池入れは板バネになっていたのだけど、それがちゃんと半田付けされていなかった。バネもくたびれていたので、手持ちの電池ボックスを付けて見た。
裏蓋が閉まらなくなってしまったけど、すっかり快調になった。まだまだ使えそうだ。
チルドアイランド?
ヒートアイランド現象と反対の事って起きないのかな。まぁ暖房の場合はヒートポンプ以外にも方法があるし、熱をかき出すよりも、引っ張り込む方が効率は良さそうだけど、厳密に調べたら測定可能なレベルの気温降下が見えるものなんだろうか。
と思ったけど、結局室内を暖めた熱は、外に逃げていくわけで、エネルギー保存の法則的には、やっぱり気温は上がっているのか。
JavaDocで独自タグを無視する
備忘録:JavaDocで@hibernate.classとかの非標準タグに警告を出さないようにする方法。
コマンドラインの場合は-tagオプションで指定(-tag hibernate.class:X)
Antタスクの時はtagエレメントをネスト。
<javadoc ...>
<tag name="hibernate.class" enabled="false"/>
</javadoc>
Livecamがハング
どうもLivecamがハングするので、kill -3してみたところ、URL.openStream()で開いたInputStreamから読み込むところで刺さっている模様。これってタイムアウトしないんだろうか。
仕方がないので、JDK5.0を入れて、URL.openConnection()してから、setConnectTimeout()と、setReadTimeout()を設定してから、connect()、getInputStream()するように変えてみた。
しかし、猫が全然写らないのが問題だなぁ。
jarにソース
ソースコード入りのJarファイル。
今度入ったプロジェクトで、warファイルになぜかソースまで入っていて「なんで??」って思っていたのだけど、こういう背景があったのか。でもwarファイルに入れて実質的に何か意味があるんだろうか(WEB-INF/classesの下)。
スパムインフレ
Googleさんがはじくspamが1か月1000件を超えた。spamインフレ。インフレになると1件あたりの価値が下がるので、それを取り返すために、spamが増えて、spamインフレスパイラル。誰かspam金利を上げてくれ。
Nuke Anything Enhanced
Flashは「機能の許可」でデフォルトoff出来るけどアニメーションGIFがチカチカとうるさい。OperaはアニメーションGIFもオフれたけどFireFoxの場合は、このextentionで画面の任意のパーツを消すことができるので、これでうるさい広告は消せる。ただ、リロードで元に戻っちゃうのが惜しい。
ショスタコービチのピアノ協奏曲
Dmitri Dmitriyevich Shostakovichの人気投票
ん〜やっぱりピアノ協奏曲2番の方が一般ウケするのか。やっぱり2楽章がメロドラマみたいだからだろうな。でもショスタコにそういう音楽を求めるってのもどうなんだ。まぁ3楽章がハノンなのは面白いけど。でも内容的な面白さといったら、1番の方がずっと上だと思うのだけどね。
ArrayListへのダウンキャスト
void foo (List list) {
List myList = (ArrayList)list;
for (int i = 0; i < myList.size(); i++) {
String data = (String)myList.get(i);
...
}
}
みたいなコードに「ダウンキャストやめようね」というガイドをしたりしていたのだけど、良く考えてみると、これってあまり良くないガイドだったかもしれない。
最初見た時はArrayListにキャストしてるくせに、List型の変数に格納していて「なんじゃこりゃ、キャスト無意味」と感じたのだけど、
確かにダウンキャストを外すと抽象度は上がる。けどループがこのままでLinkedListなんかを渡された日には、動くかもしれないけど地を這うような遅さになる事が確定している。それなら敢えてキャストを残してClassCastExceptionで落とした方が、まだマシかもしれない。
ループもイテレータを使うようにガイドをするのが、一番まっとうではあるし、そこについてこれる人には、そうガイドすべきだ。でも、そうじゃない人にとっては多分イテレータって分かりにくいというか、しきいが高いんだろうな。単に可変長の配列が欲しいって感覚だと。
多分、次善策は、
void foo (ArrayList list) {
for (int i = 0; i < list.size(); i++) {
String data = (String)list.get(i);
...
}
}
なのだろう。中がArrayListの性質に依存しているんだから引数もArrayListにしておくのが無難。柔軟性は落ちるけど、柔軟性は、それを活用出来る人にしか意味は無いわけで、そうでない人にとっては、逆に分かりにくくなるだけだ。
Webカメラ
安売りしていたので、LOGITECHのLEC-V300/Wというウェブカメラを買ってみた。無線LAN対応なので、電源さえつなげばok。
画質は、ん〜、それなり。もともと監視カメラ用途なのだろうね。 httpサーバが入っていて、トップのIMAGE.JPGをgetすればokなので利便性は高い。
どこからでも、猫タワーが見られるのはいい感じ。
new Integer()は無駄
そういえば、Integerには定数ZEROとかが無いな〜と思ったら、
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
valueOf(0)を使っておけばいいのか。
中華街
ふらりと中華街へ。京急の踏切が無ければ、もう少し早く行けるんだけど... 羽田を拡張するなら、あの踏切を何とかして欲しい。
デザートに餅があった。何かの番組(不思議発見だっけ)で中国には餅(餅米の)が無いというような事を言っていたと思うんだけど、これは日本用のアレンジなのかな。
なんか、すごく露出アンダーだった。確かに真っ白の背景だ。S30のRAWで撮ってあったのでSILKYPIXのノイズキャンセラで何とか救われた。
Pebbleでコメントついたときにe-mail
ちょっと悩んだのでメモ。
Blog propertiesで、E-mail notificationのところにメールアドレスと送信先のメールサーバのIPアドレスを書いてセーブ
Pluginsで、Comment Listenrsのところにpebble.event.comment.EmailNotificationListenerを記入してセーブ
Reload(Maintenanceのところにある)をクリック
メールには内容が書かれているみたいなんだけど、漢字は文字化けしている...










献本いただきました。ありがとうございます。