0

私は を持っていますがArrayList<Container>、などにするContainerことができます。arraylist を反復している間、それがどのタイプのコンテナであるかを調べ、それに応じて応答する必要がありますContainer<String>Container<Integer>Javaには型消去があることは知っていますが、型を事前に保存して後で取得する方法はありますか? 何かのようなもの

public T type;

そして後でそれを使用する

container.type A = container.dosomething();
4

2 に答える 2

0

変数の型はコンパイル時の概念です。その目的は、その変数または式で許可されている操作をコンパイラが判断できるようにすることだけです。

したがって、「コンパイル時に不明な型」は、コンパイラがそれで何ができるかについて何も知らないため、まったく役に立ちません。したがって、変数は typed にすることもできますObject

于 2013-03-05T19:08:32.970 に答える
0

実行時、Java はジェネリックスの型情報を保持しません。タイプの削除が行われ、すべてのコンテナーが同じランタイム タイプであると見なされます。リフレクションを使用すると、ジェネリックに関する情報を取得できますが、努力する価値はほとんどありません。むしろ、コードを再設計getClass()するか、コンテナー内の要素を使用してコンテナー内の実際の要素の型を判別することを検討する必要があります。

于 2013-03-05T14:30:01.890 に答える