タグ

C++とJavaに関するipusironのブックマーク (3)

  • Java総称型メモ(Hishidama's Java Generics Memo)

    メソッドの総称型 メソッドのみに総称型を適用した定義を行うことも出来る。[2007-06-12] 戻り値の型の直前に「<仮型引数, 仮型引数…>」を置くだけ。後はクラスの場合と同様。 public static <T> T notNull(T arg1, T arg2) { T ret; if (arg1 != null) { ret = arg1; } else { ret = arg2; } return ret; } このメソッドを呼び出す側は、クラスの場合とは異なり、明示的に型引数を指定する必要は無い。 指定した引数の値に応じて、自動的に型が判断される。 String s = notNull("abc", "def"); //型引数はString Long l = notNull(new Long(1), new Long(2)); //型引数はLong int i = notNu

  • Javaのジェネリックは所詮ただのダウンキャスト回避-My Little Hip By MyPROFILE

    C++のテンプレートを使いこなせるとすごく便利(C++は全然書けないけど)、というのはJavaのジェネリックが所詮ダウンキャストをソースコード上から排除するためのシンタックスシュガーである!ことを痛感するとより一層強く感じる。(何を今更!?って思う濃ゆいJavaプログラマーも多いと思うが)脳内でクラスを考えて書き始めると、テンプレートを期待したデザイニングをしていてJavaじゃインプリメントできないじゃん orz となる事が多い。 例えばJAXB2.0の汎用ラッパを作ろうとしたとき、 public class XmlSerializer<T> { ... public T deserialize(final InputStream in) //例外処理は省略 { final JAXBContext jbctx = JAXBContext.newInstance(T.class

  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • 1