获取对象附带的泛型类型的class对象

具体问题如下:

```java
class main{
  public static void main(){
    Set<String> set=new Set();
    set.add("1");
    set.add("1");
    set.add("1") ;
    System.out.print(b(set));
  }
  public static <T>String b(Set<T> s){
  
    //这里写什么?
    
    return //可以返回实际传入的T的class对象
  }
}

网上好多给的这个方法

Type actualTypeArgument = ((ParameterizedType) s.getClass().getGenericSuperclass()).getActualTypeArguments()[0];

但返回的是"Set<E>"中的E

你用的那串代码获取的是类定义中属性类型,实际的类型是在类变量定义的时候确定的,所以从类定义中是拿不到具体类型的。只能是获取Set对象中的元素,直接判断元素类型。

Set<String> set = new HashSet<>();
set.add("sss");
System.out.println(set.toArray()[0].getClass().getName());

就是想获取到泛型类的class对象,而不是其元素,不只是final的String。所以要考虑子类问题