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

クエリ

言ってみればDIかも。 進捗遅れ気味で多方面にご迷惑かけてますが、↓がリアルタイムで動きました。 /** * @when * protected in x.modifiers */ public void sample(Messager messager, CtMethod x) { messager.warn(x, x.toString()); } まず、「@when」で…

least upper bound

class Integer extends Number implements Comparable class Long extends Number implements Comparable これら2つのクラスの最小上限境界計算がうまくいかない。何に使うかというと、 static <T> T t(T...t) { return null; }というメソッドがあったときに t(</t>…

型の不一致

Javaでは、プリミティブ型のクラスリテラルをそのラッパー型を利用して表現する。 int.class: Class でも、プリミティブ型の配列はそのまま使える。 int.class: Class.class> そこで、 static <C> Class<C> component(Class<C[]> array) { return null; } static <C> Class<C[]></c[]></c></c[]></c></c>…

半順序関係にある集合のmaximal/minimal値集合

id:dkameyaさんに教えていただきました。表題の計算について、ヒープソートがよさげらしい。

VARARGS

VARARGSを「可変長引数」と呼ぶけれど、Variable Argumentsの略だとすると「可変引数」。それだとvariantな香りがするのでJLS読んだところ、「Variable Arity」と表現されていた。 久々に英辞郎で引けなかったのでぐぐる先生にお伺いを立てたら、どうやらAri…

単項数値演算の違和感

単項+演算子は単項数値格上げの対象になる。 byte b = 10; byte c = +b;上記の「+b」は単項数値格上げによってintになり、byteに代入できない。 byte b = 10; byte c = +10;今度はOK。代入の際には代入変換と呼ばれる変換があって、代入する値が定数であり、…

JSR-202 Java Class File Specification Update

Type Signatureの文法がconflictしてるよねー、と知り合いに言われたので覚書。原版 FormalTypeParameter: Identifier ClassBound InterfaceBound* ClassBound: : FieldTypeSignature? InterfaceBound: : FieldTypeSignature現行javacの実装 FormalTypeParam…

オーバーライド等価性 + 総称化による共変引数

class A<T> { void f(T arg) {} }class B extends A<String> { @Override void f(String arg) {} }後者Bはコンパイル後に型の消去を受けて下記のようになるはず。 class B extends A { bridge void f(Object arg) { f((String) arg); } void f(String arg) { } }m1とm2</string></t>…