Objectクラスベース
1594 ワード
次のコードは、カスタムクラスを追加できる簡単なコレクションクラスです.
2つの単純なクラスを定義できます.
テストクラスをもう1つ書きます.
実行結果:
foo 1名称:1番Foo 1 foo 2名称:2番Foo 2
プログラムでは、すべてのオブジェクトがObjectのサブオブジェクトであるため、SimpleCollectionオブジェクトに任意のタイプのオブジェクトを追加できます.SimpleCollectionからインデックスを指定してオブジェクトを取り戻す場合、オブジェクトのタイプをObjectから元のタイプに変換することで、上記のテストクラスのshowName()のようなオブジェクト上のメソッドを実装できます.
public class SimpleCollection
{
private Object[] objArr;
private int index = 0;
public SimpleCollection()
{
// 10
objArr = new Object[10];
}
public SimpleCollection(int capacity)
{
objArr = new Object[capacity];
}
public void add(Object o)
{
objArr[index++] = 0;
}
public int getLength()
{
return index;
}
public Object get(int i)
{
return objArr[i];
}
}
2つの単純なクラスを定義できます.
public class Foo1
{
private String name;
public Foo1(String name)
{
this.name = name;
}
public void showName()
{
System.out.println("foo1 :" + name);
}
}
public class Foo2
{
private String name;
public Foo2(String name)
{
this.name = name;
}
public void showName()
{
System.out.println("foo2 :" + name);
}
}
テストクラスをもう1つ書きます.
public class SimpleCollectionDemo
{
public static void main(String[] args)
{
SimpleCollection sc = new SimpleCollection();
sc.add(new Foo1(" Foo1"));
sc.add(new Foo2(" Foo2"));
Foo1 f1 = (Foo1)sc.get(0);
f1.showName();
Foo2 f2 = (Foo2)sc.get(1);
f2.showName();
}
}
実行結果:
foo 1名称:1番Foo 1 foo 2名称:2番Foo 2
プログラムでは、すべてのオブジェクトがObjectのサブオブジェクトであるため、SimpleCollectionオブジェクトに任意のタイプのオブジェクトを追加できます.SimpleCollectionからインデックスを指定してオブジェクトを取り戻す場合、オブジェクトのタイプをObjectから元のタイプに変換することで、上記のテストクラスのshowName()のようなオブジェクト上のメソッドを実装できます.