2009-01-01から1ヶ月間の記事一覧

SunのコンパイラとEclipse JDTで動きが違う(4)

型推論の正解が分からない - しげるメモからの派生。型推論で出現する無限型の取り扱いについて、SunのjavacとEclipseのJDTで微妙に動きが違う。

型推論の正解が分からない

自分めも。だけどわかる人教えてください。 public static void main(String...args) { Integer a = 1; Long b = 2; Object result = method(a, b); // resultの型は? } static <T> T method(T a, T b) { return null; } このmethod(a, b)の型推論で、Tはどの</t>…

オーバーロードの仕組みをサンプルで

オーバーライドの仕組みをサンプルで - しげるメモでオーバーライドをやったので、今回はオーバーロードについて自作してみます。 (一応)オーバーロードの仕組みを説明しておくと、Javaでは同じ名前の引数が異なるメソッドを同じクラスに複数定義できます。 …

代入変換とメソッド起動変換

ここでよく取り扱ってるんで、まとめがてらちゃんと解説。Java言語仕様第3版のCHAPTER 5: Conversions and Promotionsを簡単にまとめたものだと思ってください。

SunのコンパイラとEclipse JDTで動きが違う(3)

酒の肴くらいにしかならない豆知識。メソッド呼び出し時の型推論とか - しげるメモの知識が前提のネタです。下記のコードはjavacとJDTで動きが違います。 public class Assignable { public static void main(String[] args) throws Throwable { throw get()…

メソッド呼び出し時の型推論とか

自分めも。途中からメソッド呼び出し時の型推論についての話題になっても気にしない。タイトルも直した。

文ラベルのスコープ

自分めも。

オーバーライドの仕組みをサンプルで

オーバーライドの仕組みを紹介するために、Javaでクラスベースのオブジェクト指向の仕組み(オーバーライドメソッドの動的束縛部分のみ)を簡単に作ってみる。

SunのコンパイラとEclipse JDTで動きが違う(2)

SunのコンパイラとEclipse JDTで動きが違う - しげるメモでも言及してますが、SunのjavacとEclipseのJDTでは微妙に内部クラス周りの動作に差異がある模様。java.lang.Class.getCanonicalName()の動作を確認してる最中で、また微妙に動きが違うものを発見。

ワイルドカードと捕捉変換

引き続き自分めも。Eclipseでよく見かけるエラー。 これは疑似的には次のように解釈されてる。

上限境界と下限境界を持つワイルドカード

自分めも。Javaのワイルドカードは? extends Hogeとか? super Fooとか書けるけど、? extends Hoge super Fooとは書けない。その前提でモデリングしてたらめんどくさいパターンを思いついた。

メソッドオーバーロードの動的束縛とか

Javaのメソッドは名前が似てるオーバーライドとオーバーロードという二つの概念があります。オーバーライドはサブクラスでメソッドを再定義するもので、オーバーロードは同じ名前で引数が異なるメソッドを複数定義する仕組みです。で、今回はJavaのメソッド…

enumをもうちょっと使う

enum basics - しげるメモで基本的なことをおさらいしたので、私がよく使ってるenum関係のパターンをいくつか。

最近のVisitor

最近よくVisitorを使うので、もうちょっと使いやすいスタイルにならないかなーと思って作ったのがこれ。

enum basics

仕事柄、Javaのenumを使うことが多いのですが、あまり世の中のプログラムでenumを全力で使ってるところをあまり見かけません。ということで、自分でもどうなのと思うときがちらほらあるenumの使い方をまとめてみようと思いますが、とりあえず今回は普通の復…

Commandのサンプル

あんまりコマンドじゃない。コマンド++

Visitorのサンプル

某所でVisitorのサンプル書くとか言う話題になったので。

今年の目標

本を読む 専門書を3冊/月くらいのまったりペース 形式言語と分散処理を中心に ライブラリ/フレームワークを整備する 集合 グラフ テキストエディタ 推論 メタモデリング/生成系 プロトコル系 コーディング規約系 作りかけのコンセプトの深化 対象特化問い合…

似非PDAをfluent interfaceで

みんな変態にしかスターをくれないので。型変数使うとプッシュダウンオートマトン(のような動作)を実現できたりもする。ただし、スタックに積めるのが1種類の値だけなのでかなりイマイチではある。 System.out.println( new Xml() .tag("hello") .attribute(…

DFAをfluent interfaceで書いてみる

某所で変態扱いされたので解説がてら。こんな "1 plus 2 minus 5 is" みたいなことを書けるDFAをJavaで書いてみる。単純に現状態を表すのクラスの中に「次状態 入力() {...}」なメソッドを作ってるだけ。 public class Dfa { public static void main(String…