| HOME » 開発者ブログ |
|
こんにちは。受託開発担当(ここでは雑記担当)のMasaです。
Java5 が登場してすぐに仕事で使用する機会があったのですが、当時は Generics に感動しました。
その後、C#3.0 での開発を経験し、最近また Java6 で開発しているのですが。。。
Java で一番困ったことは
T instance = new T();
とか
if (T instanceof MyObject) {
}
とかできないことです。 C#3.0 はできたのになぁ。とりあえず検証してみます。
まずは C# です。とりあえず適当なクラスを作成します。
public class MyObject
{
public MyObject() { }
}
public class MyObject1 : MyObject
{
public MyObject1() : base() { }
}
public class MyObject2 : MyObject
{
public MyObject2() : base() { }
}
public class Test
{
static void Main(string[] args)
{
Test test = new Test();
}
}
Test クラスに検証用に MyObject クラスから派生されたクラスの型を指定し、インスタンスを取得するメソッドを追加します。
public T Create<T>() where T : MyObject, new()
{
if (typeof(T) == typeof(MyObject1))
Console.WriteLine("MyObject1です。");
if (typeof(T) == typeof(MyObject2))
Console.WriteLine("MyObject2です。");
return new T();
}
実行してみます。
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.Create<MyObject1>().GetType());
Console.WriteLine(test.Create<MyObject2>().GetType());
}
長くなってきたので Java の検証は次回ということで。。。
Permalink: http://www.hos.co.jp/blog/20090924/
Last modified: 2009 年 9 月 24 日 5:23 PM
※ 開発者ブログの内容は無保証です。製品のユーザサポート対象ではありません。ご了承ください。