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

コンテキストを利用する式

メモ。コンテキストによって動作が変わるもののうち、忘れそうなもの。 (こういうのってレフトコンテキストとか呼ぶんでしたっけ)

finalでないprotectedフィールドの使い道

思いつきメモ。 class Hoge { static interface Expr {} static class Add implements Expr { protected Expr left; protected Expr right; } static class Sub implements Expr { protected Expr left; protected Expr right; } static class Value impleme…

メソッド呼び出しの型推論を追いかける(前半)

メソッドの型推論エンジン作ってて、そのテストケースの洗い出し中。 Java言語仕様(第3版)の15.12.2.7 Inferring Type Arguments Based on Actual Argumentsを私なりに解説してみようと思います。理解してしまえば、そんな実装が難しいものではありません。…

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

今回はちょっと難易度高め。 メソッドの型推論にちょっとした穴を見つけたので動作確認してたら動きが異なりました。捕捉変換に関する覚え書き - しげるメモの概要をつかんでないと何言ってるか分からないかもしれません。

捕捉変換に関する覚え書き

まじめにJavaの型推論書いてるのでメモ。capture-#xとか分かるようになるかも。 レビューに付き合ってくださる方は Java SE Specifications からPDFをダウンロードしておくとよいかと*1。 *1:リンク貼るのが面倒になった

型推論のちょっとしたこと

List<null>型を作れないか考えてて全然関係ないこと思いついた。 void f() { String a1 = id(null); // ok String a2 = id(id(null)); // error String a3 = id(a3 = id(null)); // ok } <T> T id(T t) { return t; } 「制約 null << T のとき、Tに課せられる制約」を</t></null>…

可視性周りの覚え書き

Java言語仕様はまとまってなくて情報が点在している気がする。ということでメモ。

コンストラクタ周りの覚え書き

じぶんめも。

なに書くかなあ

と考え中

型と集合

風邪引いた。http://d.hatena.ne.jp/nowokay/20090308 をみてて思ったのですが、id:SiroKuro さんが議論していたことは前提 クラスの定義がまずある 任意のクラスの定義Dに対し、型type(D)が定義される 任意のクラスの定義Dに対し、クラスclass(D)が定義され…

クラス、値、型

「クラスは型である」は間違いである - SiroKuro Pageを読んで少し考えてみた。とりあえず、私のボキャブラリでは「値」がないと型を説明できなかった。まずは、値と型の関係を定義する。 すべての値は型をもつ 型はその値に対する操作に制約を課す 型はその…