方法定义 public static byte[] serializa(T obj) 中 的意思

lercent 2017-12-21 11:12:29
看代码的时候看到一个方法的定义:
public static <T> byte[] serializa(T obj){
Class<T> cls = (Class<T>) obj.getClass();
return null;
}
当去掉方法上的<T>后就报错:Cannot make a static reference to the non-static type T,
不明白为什么,因为去掉<T>后 方法返回值类型与方法名都有呀,是泛型的特殊规定吗?
...全文
388 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KiH_Jim 2017-12-21
  • 打赏
  • 举报
回复
你把Class后面的T也去掉 ,不要强转 ,就不会了
mmqw 2017-12-21
  • 打赏
  • 举报
回复
创建两个对象,泛型分别是A、B,然后调用这个静态方法,返回的是A还是B啊
KiH_Jim 2017-12-21
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390202559
lercent 2017-12-21
  • 打赏
  • 举报
回复
可能我没有描述清楚,简化一下: class Demo<T> { public static <T> String serializa(T obj){ return null; } } 当去掉方法serializa上的<T>后就报错:Cannot make a static reference to the non-static type T, 如果同时把static <T>都去掉,也没问题,是静态方法与泛型之间有什么特殊的约定吗?