重複の可能性:
実行時のローカル変数のジェネリック型
私は Java のジェネリックは初めてで、.NET の世界から来たので、次のようなメソッドを記述できることに慣れています。
public void genericMethod<T>(T genericObject)
{
if (genericObject is IList<String>)
{
//Do something...
}
}
このメソッドはジェネリック型のオブジェクトを受け入れ、そのオブジェクトがジェネリック インターフェイスの特定IList<>
のバージョン (この場合は )を実装しているかどうかをチェックしますIList<String>
。
今、Javaでは、これを行うことができます:
public <T> void genericMethod(T genericObject)
{
if (genericObject instanceof Set<?>)
{
//Do something...
}
}
しかし
Javaは私にさせませんif (genericObject instanceof Set<String>)
私が知っていることから、型消去のため、通常 Java ではこれはクラス オブジェクトによって処理され、次のようなことを行います。
public <T> void genericMethod(T genericObject)
{
Class<OurTestingType> testClass = OurTestingType.class;
if (genericObject.getClass() == testClass)
{
//Do something...
}
}
しかし、私がチェックしているタイプは汎用インターフェースであるため、これを行うことはできません:
Class<Set<String>> testClass = Set<String>.class
では、Java では、ジェネリック オブジェクトが特定の型を実装しているかどうかをどのように確認すればよいのSet<String>
でしょうか。