java泛型方法的一个小问题

ahfytao 2016-08-19 10:07:49
java初学者一枚,学习别人的代码遇到类似如下的泛型方法定义:
public static <T> boolean check(String a, int b, String c) {
T t = null;
t = (T)fun(a,b,c);
return t != null;
}
调用的时候直接通过类名来调用,即 boolean f = a.check(a,b,c);
求问函数里的T是如何确定的?
...全文
239 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
肃穆丶 2016-08-19
  • 打赏
  • 举报
回复
我也是新手。。。 t = (T)fun(a,b,c); 若fun 的返回值不是参数类型或者Object,那就编译出错了吧, 非空校验其实可以写成 return fun(a,b,b)!=null ;
soton_dolphin 2016-08-19
  • 打赏
  • 举报
回复
类变量<T> 是在你调用这个方法的时候提供 但是你这个方法根本不需要如此定义,直接返回 fun(a,b,c) != null 即可
解开者 2016-08-19
  • 打赏
  • 举报
回复
这种代码除非fun的返回值也是参数类型或者返回Object,否则不能通过编译。 从代码上看,这个方法不应该写成泛型方法,因为非空校验不需要知道类型,唯一的区别在于可能抛出转型异常。 静态泛型方法的调用,可以手动指定参数类型,避免混淆:boolean f = a.<String>check(a,b,c);
  • 打赏
  • 举报
回复
没太明白你的意思, fun函数返回的值可以转T 这个应该看fun有没有返回值, 如果fun没有返回值 为空 这里cheak函数返回的就是false 否则 true

62,628

社区成员

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

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