如何在泛型方法中检查泛型类型

Ale*_*ndr 0 java generics

我在 Java 中需要这样的东西(C# 示例)

 class Program
    {
        static void Main(string[] args)
        {
            Method<String>();
        }

        static void Method<T>()
        {
            Type typeT = typeof(T);
            Type typeString = typeof(String);
            if (typeT == typeString)
            {
                Console.WriteLine("Is String");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有通用方法,需要在方法中检查类型 T。

protected <T> MyClass<T> myMethod(MyClass<T> myObj){
   // if  T is string do ..., else do ... 
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*kov 5

您需要一个额外的 type 参数Class<T>,因为在类型擦除之后,通用信息将被擦除。但是,拥有一个Class<T>将允许您T在运行时访问(元)信息:

protected <T> MyClass<T> myMethod(MyClass<T> myObj, Class<T> clazz) {
   if (clazz == String.class) { ... } 
}
Run Code Online (Sandbox Code Playgroud)