Java5

Metadataのサンプル

以前に一度、Java5の仕様評価をしたとき、先のログ(「Metadataとは」)で書いた「Dynamicな利用」は、煩雑さが先に立ってしまっている印象を受けた。Javaでは、「なんで、こんな仕様が??」ということがしばしばあって、Log4Jというデファクトスタンダード…

Metadataとは

一般に、「Meta(メタ)」という言葉は、それに続く言葉の上位概念を意味する。 したがって、Metadataは、dataの上位概念いう意味だが、「上位概念」という言葉はわかりずらい。 ITに関する限り、(誤解を恐れずに書くとすれば)「上位概念」は「属性」を意…

Static Importのサンプル

Static Import(静的Import)は、他のクラスで定義されたstatic定数やstaticメソッドを、import文によって取り込むことを意味している。これもサンプルを書いてしまった方が速い。 よく、「定数クラス」といって、 package test.beans; public final class C…

Varargsのサンプル

VarargsはVariable-length arguments(可変長の引数)の意味で、コンストラクタやメソッドに渡す引数の個数が特定できない場合、引数の個数に自由度を持たせたい場合に使用する。要するに、数を限定せず、同じ型のオブジェクトを(コンストラクタを含むメソ…

TypeSafeなEnumを拡張する

TypeSafeなEnumの「値」には、プロパティーを追加したり、メソッドを追加したりという拡張を施すことができる。 ここでは、このようなTypeSafeなEnumの拡張を行ってみる。一風変わった書き方になる。 サンプルを見た方が速いので、サンプルコードを以下に示…

TypeSafeなEnum(基本)

Java5.0より、Typesafe(タイプセーフ;型に関して安全)なEnumという型が追加された。 リテラル(値)を列挙して保持するのに用いられることから、「列挙型」と呼ばれる。 一種の内部クラスであって、少し変わった動きをする。まずは、簡単なサンプルを書い…

Autoboxing/unboxingのサンプル(シグナチャ)

ここでは、この機構が シグナチャ にどう影響するのか、確認してみる(基本型とラッパークラスで記述したシグナチャを、きちんと区別するか、を確認する)。たとえば、以下のような3つのメソッド(A)、(B)、(C)があったとする。この場合に、Autoboxing/Unbox…

Autoboxing/unboxingのサンプル(比較演算子)

Autoboxing/unboxingの機構は、(誤解を恐れずに書くと)ラッパークラス(オブジェクト)をプリミティブ型変数の「垣根」をなくす機構。ここでは、この機構が 比較演算子 にどう影響するのか、確認する。(比較演算においてどのように振舞うか、を確認する。…

Autoboxing/unboxingのサンプル(基本)

「プリミティブ(基本)型」と「参照型」について簡単に書いてから、Autoboxing/unboxingについて書こうと思う。プリミティブ型は、「値」だけ持つ変数であって、オブジェクトではない。 Javaはオブジェクト指向言語であるから、これらプリミティブ型に対応…

Genericsのサンプル(型引数をとるメソッド)

ここでは、型引数を使ったメソッドのサンプルコードを書いてみる。Genericsの導入により、メソッドが アクセス修飾子 戻り値の型 メソッド名(引数の型 < 型引数 > obj) ... (1) という書き方ができるようになった。 まず、以下にこの(1)の記法を用いたサンプ…

Genericsのサンプル(型引数をとるクラス)

「GenericsとAutoboxingの簡単なサンプル」では、簡単な例を使って、GenericsとAutoboxing/unboxingが対になることで、コードの単純化、実行時例外(Runtime Exception)の前倒し(コンパイルエラーにする)を実現できることを示した。ここでは、型引数を使…

拡張for文のサンプル

Tigerより、for文が簡易に書けるようになった。まずは、サンプルプログラムから見てみる。 package test; import java.util.ArrayList; import java.util.List; /** * 拡張for文のサンプル * */ public class ExampleEnhancedLoop1 { public static void mai…

GenericsとAutoboxingの簡単なサンプル

Generics(ジェネリクス)の簡単なサンプルを書いてみる。 GenericsとAutoboxing/unboxingは、密接に結びついていて、以下に示すような簡単なサンプルでは、「どちらの仕様が機能しているのか」わかりづらい。はじめに、1.4系までのシンタックスで簡単なコー…

Java5の仕様を確認する(その2;Syntaxについて)

「Java5の仕様を確認する(その1)」に書いたように、Java5.0(Tiger)では多くのSyntaxの変更がなされている。Sunの「New Features and enhancements J2SE 5.0」の「Java Language Features」にその概略がかかれている。 Generics 型に関して長い間待ち望…

Java5の仕様を確認する(その1)

Javaとは古いつきあいなのだが、ここ数年はコードすることもなかった。 Java5(Tiger)が出て、さぁ、やるか、というタイミングで仕事が大きく変わってしまったから。なので、世の中(現時点のJavaのバージョンはJava6_11)から随分と取り残されてしまった感が…