初期化する限り、contents
あなたが持っているものがあなたができる最善のことだと思います。方法があれば、ArrayList
おそらくそれを行います(行132: http: //www.docjar.com/html/api/java/util/ArrayList.java.html)
しかし、「コンテンツにはObjectクラスから継承されたメソッドが含まれている」と言う場合、コードでTインスタンスを操作しているときなどのメソッドにしかアクセスできないことを意味していると思いtoString
ます。equals
これが主な問題です。T
これは、インスタンスが何であるかについてコンパイラに何も伝えていないためです。特定のインターフェースまたはタイプからメソッドにアクセスする場合は、にタイプ制約を設定する必要がありますT
。
次に例を示します。
interface Foo {
int getSomething();
void setSomethingElse(String somethingElse);
}
public class TestClass<T extends Foo> implements AbstractDataType<T> {
T[] contents;
public TestClass(int length) {
this.contents = (T[])new Object[length];
}
public void doSomethingInteresting(int index, String str) {
T obj = contents[index];
System.out.println(obj.getSomething());
obj.setSomethingElse(str);
}
}
これで、から継承されたメソッド以外のメソッドにアクセスできるようになりましたObject
。