クラステンプレート(ex set)の型名を取得したいと思います。例えば私が使用している場合:クラステンプレートの型名を取得する
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
は、どのように私は、pが空の場合でもp.getTypeName()
のようなものを使用して(PERSONNEである)Pの型名を知ることができます。
クラステンプレート(ex set)の型名を取得したいと思います。例えば私が使用している場合:クラステンプレートの型名を取得する
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
は、どのように私は、pが空の場合でもp.getTypeName()
のようなものを使用して(PERSONNEである)Pの型名を知ることができます。
実行時には実行できません。これはtype erasureが原因です。
Javaのタイプ消去のため、実行時にパラメータ化された型にアクセスすることはできません。
if (someObject instanceof SomeType) {
...
} else if (someObject instanceof SomeOtherType) {
...
} ...
しかし、たとえどんなタイプのものであっても、何らかのタイプのオブジェクトのセットを持っていると仮定して、セットが空のときにタイプがSomeTypeかSomeOtherTypeかどうかをテストできないと思いますか? – shn
@ user995434空のセットがある場合、渡されたパラメータは何故問題になりますか? –
SomeTypeタイプのオブジェクトの集合AとSomeOtherType型のオブジェクトの別の集合Bがあるとします。このセットが空でTがSomeTypeの場合、タイプAのオブジェクトのセットを予約すると仮定して、セットAを空にする(クリアする)必要があります。各オブジェクトにインジケータがないタイプのSomeTypeまたはSomeOtherType? @ChrisCashwell – shn
JavaはC++のようにテンプレートをジェネリックを持っていますが、ありません:。、しかし、あなたははこととちょうどそれがそれらの一つであるかどうかを確認したい場合がありますどのような種類それがわかっている場合だから 'HashSet'は「クラステンプレート」ではありません。 Javaのジェネリックスは、C++のテンプレートと同じでは機能しません。 – Jesper