黑马程序员技术交流社区
标题:
泛型的问题
[打印本页]
作者:
王大斌
时间:
2013-4-21 00:03
标题:
泛型的问题
本帖最后由 王大斌 于 2013-4-22 08:52 编辑
谁给我解决下
定义了
private static <T > T autoConvert(T a)
{
return a;
}
当我使用的时候,这个T是根据我参数来决定的?
而对于下边的来说
private static <T > T autoConvert(Object obj)
{
return (T)obj;
}
当我使用
Object o = new Object();
String s = autoConvert(o);
为什么这里就是由这个定义的String去决定这个T的类型?
作者:
wangyougu010
时间:
2013-4-21 00:27
泛型定义在方法中返回值的位置,那么该泛型只能在这个方法中使用,你的参数类型用到了这个T,所以是T类型的,至于后面那个,方法返回值是泛型T类型的,所有return返回一个T类型,最后那两行,代码不完整好像
作者:
gerenvip
时间:
2013-4-21 00:54
这是不可能的事啊。你的代码是不是给错啦。你给的代码中的autoConvert方法是私有的,如果你想调用要么在同类中,直接调用,要么在本类中提供获取该方法的公有方法,供其他类对象调用。
按照你给的代码,应该在同一个类中调用autoConvert方法,如果那样的话类型T你怎么指定?你传入Object对象,返回T类型的对象。这时不可能转换成功的,必然会抛出异常的啊!
作者:
932759732
时间:
2013-4-21 01:17
private static <T > T autoConvert(Object obj)
{
return (T)obj;
}
你的这两个方法是有区别的。上一个是通过传入参数类型来决定返回值类型。
而你的第二个方法完全就是没有意义的。你只是重复的赘述了你的返回值类型是T。并没有把它和传入参数类型扯上任何关系。
所以即使你传入的是Object,也可以返回的是String .这不冲突。
只是你这个泛型写了跟没写都一样
作者:
黄玉昆
时间:
2013-4-22 08:12
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2