方法定义 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>后 方法返回值类型与方法名都有呀,是泛型的特殊规定吗?
...全文
379 4 打赏 收藏 转发到动态 举报
写回复
用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>都去掉,也没问题,是静态方法与泛型之间有什么特殊的约定吗?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧