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

标签 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");
            }
        }
    }
}

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

protected <T> MyClass<T> myMethod(MyClass<T> myObj){
   // if  T is string do ..., else do ... 
}

最佳答案

您需要一个 Class<T> 类型的附加参数,因为类型删除后通用信息将被删除。然而,有一个 Class<T>将允许您访问有关 T 的(元)信息在运行时:

protected <T> MyClass<T> myMethod(MyClass<T> myObj, Class<T> clazz) {
   if (clazz == String.class) { ... } 
}

关于java - 如何在泛型方法中检查泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32755748/

相关文章:

java - 单击时从 ListView 中删除所选项目

java - 选择合适的模板引擎

java - 比较映射忽略给定字段

java - 用 Java 漂亮地打印 map

java - 如何安全地将通用通配符 "?"转换为 Java 中的已知类型参数?

generics - 如何编写用于添加泛型类型的两个引用的特征绑定(bind)?

c# - 通过传递 Expression<Func<T, object>> 使用反射调用方法

java - 如何检测java程序中的内存压力?

.net - 托管 C++ 中的泛型泛型

协议(protocol)的 Swift 3 泛型/关联类型限制