タグ

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

  • Javaのメモリ管理

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

  • ジェネリクスの代入を理解する その2

    前回はまず、ジェネリクス型パラメータを伴うList同士の代入互換性について述べました。 今回はそれらのListのadd()メソッドとget()メソッドについて見てきたいと思います。 なお、前回同様に C extends B, B extends A という継承関係があることとして以下話を進めます。 入力値の制約 前回で<? extends B>型には <B>も <C>も <? extends C>も代入できると述べました。 List<? extends B> listBEx = new ArrayList<C>(); ということができるわけですね。 さて、このlistBExにadd()をしてみるとしましょう。 listBEx.add(new B()); 実は、これがコンパイルエラーになるのです。 List<? extends B>型には B型をadd()できないのです! というのも、さきほ

    takkecy
    takkecy 2011/05/11
  • ジェネリクスの代入を理解する その1

    Javaのジェネリクスはかなり強力で、相当の型を表現できるのですが、 代償として非常に複雑なものとなっています。 ややこしいのは、オブジェクト指向の部分の型の代入互換性と、 ジェネリクス型パラメータの部分の代入互換性は、表現こそ似ているものの、 その意味するところはまるで違うと言うことにあります。 端的には、C extends B, B extends Aの関係があるとして、 型B にはサブクラスであるCをキャストなしに安全に代入することができます。 B b = new C(); しかし、ジェネリクス型パラメータの場合の List<B> listB = new ArrayList<C>(); はコンパイルエラーとなります。 List<? extends B> listBEx = new ArrayList<C>(); であれば代入が可能です。 このように、同じ継承階層の型を扱うのにもかかわ

    takkecy
    takkecy 2011/05/11
  • Spring/Struts/Hibernateのベストプラクティス

    わんくまでは珍しいJavaを中心とした日記です 目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 218 記事 - 0 コメント - 14580 トラックバック - 28 書庫 2008年7月 (1) 2008年2月 (2) 2008年1月 (10) 2007年12月 (9) 2007年11月 (5) 2007年10月 (27) 2007年9月 (25) 2007年8月 (27) 2007年7月 (29) 2007年6月 (15) 2007年5月 (23) 2007年4月 (37) 2007年3月 (8) 日記カテゴリ Java (rss) JavaScript (rss) SQL (rss) WEB (rss) その他 (rss) いろいろリンク The Herringroe Projects(Javaで色々) わんくまトップ 古い方のブログ Spring/S

  • 1