タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

javaとprogrammingとGenericsに関するdecoy2004のブックマーク (3)

  • FutureTaskのコンストラクタと魔法のバインド - プログラマーの脳みそ

    java.util.concurrent.FutureTaskのコンストラクタの定義が public FutureTask(Callable callable) http://docs.oracle.com/javase/jp/8/docs/api/java/util/concurrent/FutureTask.html#FutureTask-java.util.concurrent.Callable- とCallable<V>となっていてCallable<? extends V>じゃないのが不便だという話題。 これにより Thread Safe な汎用オブジェクトCache - がくぞーのメモ のキャッシュ機構のコンストラクタをCallable<? extends V>に出来ないのだとがくぞさん(@gakuzzzz)が嘆いていたので、小手先のテクニックで対応したのが以下のコード。 imp

    FutureTaskのコンストラクタと魔法のバインド - プログラマーの脳みそ
    decoy2004
    decoy2004 2015/04/11
    『通常の記法では型変数にcaptuer ? extends Hogeといったものをバインドすることは出来ないが、型推論させるとバインドさせることが出来る。』
  • ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ

    先日twitterで "Expression Problem" という問題を知った。 静的な型付けの下で、場合分けのデータ構造に対して、新しい場合分けとその場合に対する新しい処理を、元のソースコードに手を加えることなく拡張定義すること 2009-05-16 この問題が意図するところを語るにはまずオブジェクト指向から流れを辿らねばなるまい。 オブジェクト指向のポリモーフィズム Javaのようなオブジェクト指向の言語で、ある特定のメソッドがあることを抽象クラスHogeで保証するとしよう。 public interface Hoge { void hoge(); } このとき、機能性、つまりメソッドというのは増えることがない固定のものだが、継承して実装されたクラスというのは自由に増やすことができる。そして、抽象型Hogeを扱っている既存コードは修正する必要がない。 これはいわゆる開放/閉鎖原則(

    ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ
    decoy2004
    decoy2004 2014/10/22
    「古典的Visitorパターンは要素の追加が困難とされてきたがジェネリクスを導入することでこの欠点を克服することが可能だ。』
  • new T()したいケースへの対処法 - プログラマーの脳みそ

    Javaのジェネリクスの話題のひとつにnew T()したいができないので困る、というテーマがある。 先日のセッションではこの対策についても簡単に述べたが今日はそのまとめ。 まず第一に疑うべきは当にnew T()する必然性があるか?というのが持論だが、ある種のフレームワークではその必然性がある。 O/RマッピングのフレームワークでPOJOにデータを詰めて返したい WebフレームワークでHTTPリクエストをPOJOに詰めてControllerクラスに渡したい (このあたりの議論はJavaのジェネリクスで,T.class や new T() ができず悩んだ話 (型パラメータのインスタンス化に関し、フレームワーク設計からケーススタディ) - 主に言語とシステム開発に関してによくまとまっている) ここで、これらのPOJO(Plain Old Java Object - 端的に言えばデータを格納する

    new T()したいケースへの対処法 - プログラマーの脳みそ
  • 1