タグ

ブックマーク / blogs.wankuma.com (8)

  • C0/C1/C2

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 26190 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

  • イレイジャではジェネリクスの何が消えるのか

    Javaのジェネリクスはコンパイル時に解決され、classファイルになった時にはジェネリクスの型情報は残されていません。そのためイレイジャ(型消去:type erasure)方式と呼ばれます。 と、ひとくちで言っても意味がよく分からないのでちょっと掘り下げてみましょう。 インスタンスからジェネリクスの型情報は拾えない リフレクションを用いたとしても、インスタンスからジェネリクス型パラメータが何であるかを取得することはできません。 List<String> stringList = new ArrayList<String>(); のような変数stringListがあったとして、ここから<String>を取得するということができないのです。これが消えてしまった部分。 この変数stringListに対する各種操作において、その型の安全はコンパイル時に精査され、 実行時にはあくまでObject型

  • 再帰型のジェネリクス型変数の境界

    先日ジェネリクスで引っ掛かった点をメモ。 自己言及するジェネリクスで述べたような具象型に具象型自身の型を扱わせることをもくろんだ型を作った場合の話。 public class GenericsTest { static abstract class S<T extends S<T>> {} static class A extends S<A> {} static class B extends A {} static class C extends S<A> {} static class X1<T extends S<T>>{} static class X2<T extends S<?>>{} static class X3<T extends S<? super T>>{} public static void main(String[] args) { X1<A> x1A; //

  • 複数通貨のMoneyをジェネリクスで作る

    Kanazawa.processではテスト駆動開発入門を読んで、テスト駆動開発を学びました。そのでのテスト駆動開発のサンプルとして挙がっていたテーマは複数通貨のMoneyを作るというものでした。 Dollarという米ドルを表現するオブジェクトを作り、Francというスイス・フランを表すオブジェクトを作り、そしてMoneyというオブジェクトに統合していくというリファクタリングの過程を経ています。 これをジェネリクスを使って設計したらどうなるでしょうか。 public abstract class Money<T extends Money<T>> { public abstract T add(Money<?> m); } Moneyオブジェクトに演算用のメソッドadd()を定義します。引き算や掛け算など要求に合わせて各種用意するといいでしょう。 Money<T extends Money

  • Javaのメモリ管理

    日のカクテルは「Javaのメモリ管理」です。 ネタ元はかつのりさんのBlogです。 GCについて勘違いしている人が結構多い JavaというとGC(ガーベッジコレクション)によって不要となったオブジェクトが回収される仕組みになっていますので、一般のプログラマはメモリの確保、解放について考える必要がありません。 ただし、プロフェッショナルなプログラマの方は一般のプログラマの分まで背負い込んで考えてもらう必要があります。 C言語のようにメモリの割り当てと解放を直接管理することはありませんが、まったく別種のメモリ管理が必要となってきます。 参照の種類 「要するに、参照がなくなればGCに回収される、参照があれば回収されない、それだけのことだろう?」 こうおっしゃるお客さんは沢山いらっしゃいます。では、参照にも種類があることをご存じですか? 強い参照 (strong reference) ソフト参照

  • Seaserのホットデプロイとリフレクション

    Seaserのホットデプロイは 実行時に特定箇所でクラスローダを毎回新しくするというシンプルなものです。 結構、割り切った作りになっているなぁというのが感想ですが、そのシンプルさと原理からいろいろと制限事項も生まれてしまう。 今回、私がハマったところはフレームワーク内でリフレクションをする際に、クラスローダの違いからClassCastExceptionを出したり、NoSuchMethodExceptionを出したりしたことでした。 クラスローダの基礎知識 まず、基礎知識としてクラスローダが違う場合、同じClassでも代入互換性がありません。Classの同一性は、Class自身とそのクラスローダによって定められます。 次に、クラスローダは階層構造をなしていて、まず親クラスローダにロード処理が移譲されます。 ClassLoader ClassLoader クラスは、委譲モデルを使ってクラスとリ

  • かつのりの日記2

    descriptionというような感じになりました。そしてDDL。 create table request(     request_id serial8 not null,     timestamp timestamp not null default now(),     uri text not null default '',     user_agent text not null default '',     remote_host text not null default '',     primary key(request_id) ); create table parameter(     parameter_id serial8 not null     request_id int8 not null default 0,     timestamp tim

  • 凪瀬 Blog - Java

  • 1