黑马程序员技术交流社区

标题: 泛型问题 [打印本页]

作者: 霍振鹏    时间: 2014-4-14 16:23
标题: 泛型问题
编写一个泛型方法自动将Object类型的对象转换成其他类型,我是这么写的,报错了 ,请问应该怎么写?
public static <T> T DynamicConversion(Object  obj)
{
return (T)obj;
}

运行时报错 :int x=DynamicConversion(2.3);

111.png (40.53 KB, 下载次数: 42)

111.png

作者: anqi    时间: 2014-4-14 16:30
public static <T> T DynamicConversion(Object  obj)
{
return (T)obj;
}

运行时报错 :int x=DynamicConversion(2.3);//这里2.3是double类型的,编译器认为T为double,你不能把赋给一个int变量,要写成int x=(int)DynamicConversion(2.3);
作者: 月光海    时间: 2014-4-14 20:46
泛型的使用不是要将类型写在参数列表中吗?这样使用有意义?我怎么指定我要的类型呢?应该是要将需要的类型作为参数传入,然后获取类型,根据类型再将Object的变量强转的吧,个人拙见
作者: 疯狂沙漠    时间: 2014-4-14 21:28
这个方法是向下自动转型,相当于
  1. Object obj ="abc";
  2. String str = (String)obj;
复制代码

作者: 随风而去    时间: 2014-4-16 00:08
回复一楼的答案,首先  int x=DynamicConversion(2.3);//这里2.3是double类型的 这里返回的不是double类型 而是一个object类型
其次此代码楼主写的不够完善你这里完全没有发挥泛型方法的作用
public static <T> T DynamicConversion(Object  obj)
{
return (T)obj;
} //我完全不知道这种写法有什么意义,甚至可以说此代码本身就是错误的
obj 强转T类型--》T是什么类型  你告诉编译器了吗?类型都不知道 如何能强转
一般泛型的是用于容器类
如 public static <T> T DynamicConversion(List<T> obj)
{
return obj.get(0);
}
如果你一定要这么写 也可以 但是请用字节码的形式传参
public static <T> T DynamicConversion(Class<T> c)
{
return c.getInstance();
}  
//最后说句,至今为止我还没发现泛型方法有什么很好的用处,基本上强制转换能够基本解决泛型方法的一般状况




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2