代码之家  ›  专栏  ›  技术社区  ›  JoeGeeky

在运行时确定泛型方法参数的类型

  •  4
  • JoeGeeky  · 技术社区  · 14 年前

    给定具有以下结构的A类。我正在尝试确定由泛型方法的调用方分配的参数t的类型。

    public class MyClass{
    
        public <T> Boolean IsSupportable() {
    
            Class typeOfT; // Need to determine Class for generic parameter T
    
            // Business Logic goes here 
    
            return true; 
        }
    }
    

    在C i中,我将使用“默认(t)”或“Type(t)”,但我试图在Java中实现这一点。有人知道我怎么做吗?我不需要实例,只需要类定义。

    2 回复  |  直到 14 年前
        1
  •  4
  •   ColinD    14 年前

    你不能那样做。您可以做的是使方法签名如下:

    public boolean isSupportable(Class<?> type)
    

    然后可以使用给定的类来检查类型。

        2
  •  1
  •   Community leo1    7 年前

    不能,泛型在运行时不可用。如果你有一个T的实例,你总是可以检查 T object 是特定类的实例 instanceof .

    这是由于 type erasure .

    另一种方法是使用 Class 类作为参数(请参见@colind's answer )