java泛型这两种写法的区别是什么

public static <T> T request2Bean(HttpServletRequest request,Class<T> clazz){}


//和
public static  T request2Bean(HttpServletRequest request,T clazz){}

可以详细说一下吗,谢谢大佬了

第二种写法编译都不会通过吧,要么按第一种方式写,要么把第二个方法改成非static的。

第一种方式不需要在类上指定泛型,属于方法泛型。

第二种方式在去掉static后,属于对象方法,需要在类上指定泛型,如class Demo<T> {...},因为泛型在实际运行中是需要确定是哪种类型的,所以在new一个类的对象时就要明确是哪种类型。而static的方法是不需要new对象就能调用的,所以不能写成第二种方式。

一个是泛型方法,一个是返回值

第一个是泛型方法,<T>是先定义,后面的 T 才是使用

第二个是泛型类,没错,就是泛型类。必然是在泛型类上先有<T>的定义,然后这里的方法就直接用到了T。

总之,记住,用泛型必然是,先定义:<T> , 后使用 T

具体可以看我的博客,有专门的泛型使用说明,哈哈。

<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型。em,,我不知道该怎么给你详细解释:

参考下这:https://www.cnblogs.com/goldmei88/articles/11259577.html