技術情報
C#のgenericsでは型パラメータを持つ型パラメータを制約するには余分な型パラメータが増えて困るorz
C#のgenericsでは、型パラメータを持つ型パラメータを制約するには余分な型パラメータを増やすしかありません(私が知らないだけかもしれないです)。
これが非常に不便で、genericsを駆使して抽象化を行ってゆくと、この制約に泣かされることになります。
何のことか分からないですね。とりあえず、次のプログラムを見てください。
(さらに…)
技術情報
俺様デシリアライザを作ろうとして困ったこと
クラスjava.io.ObjectInputStreamはどうやって実現されているんだ?
俺様デシリアライザを作るにはクラスjava.io.ObjectInputStreamをカスタマイズする必要があります。クラスjava.io.ObjectInputStreamの振る舞いを変えるには完全に再実装するしかありません(そのように無理やり制限されています)。ということは、俺様デシリアライザでクラスjava.io.ObjectInputStreamと同じような振る舞いを実現しなければいけないことになります。そこで、いろいろ考えたところ問題にぶち当たりました。
技術情報
How to get the more specific return type of a overridden method?
Javaのgenericsはある型Xの型引数へより具体的な型を代入して得られる全ての部分型Yを実行時に同一視する。つまり、全てのYのための実行時型がXになるのだ。このような実現方法をとると、実行時に各Yを区別できないという欠点はあるが、genericsを導入する前と互換性を保てるという利点がある。これがJavaのgenericsの妥協点である。この妥協点のおかげで、型引数に代入された型の情報が得られないため、リフレクション使いとしては歯がゆい思いをすることになる。
(さらに…)
技術情報
やっちゃたよ俺様JavaVM
ある日、非常に控えめのOS上で動くプログラムをC++で作って欲しいと頼まれました。C++はいろいろと面倒なのであまりできれば使いたくありません。そこで、だめもとで交渉したところ「リアルタイム性が保証できるんだったらJavaでもいいですよ」ということだったので、俺様JavaVM(Virtual Machine)を作ることにしました。そういう訳で、たまに俺様JavaVMの状況を報告します。