一个java返回类型的问题

djs36 2009-05-16 09:51:49
有个函数是这样子的

private List<?> (Class<?> cls,Map map){

List<Object> list = new ArrayList<Object>();

Object obj = cls.newInstance();

// do something here

list.add(obj);
}


我想限定成 List<cls> 大概这意思的形式,可以用泛型做到吗

感觉表达的也不是很清楚.希望能明白.
...全文
227 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
izard999 2009-05-17
  • 打赏
  • 举报
回复
返回一个带泛型的集合.?
ThirstyCrow 2009-05-16
  • 打赏
  • 举报
回复
public static <T> List<T> f(Class<T> cls) {
return new ArrayList<T>();
}
jybthcm 2009-05-16
  • 打赏
  • 举报
回复
不怎么清楚,纯粹帮顶
  • 打赏
  • 举报
回复
要弄明白泛型,需要先弄明白下六面种形式各表示什么?

泛型得弄清楚下面这些的区别

1,List
2,List<Object>
3,List<Number>
4,List<?>
5,List<? extends Number>
6,List<? super Long>


下面这个网址中有很多泛型的 FAQ,有兴趣的可以去看看。
http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
SongWeb 2009-05-16
  • 打赏
  • 举报
回复
帮顶!
CodingMouse 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 djs36 的回复:]
恩,谢谢ls

能在问下 private <T> 是什么意思呢,我网上没搜到
这几天正在看泛型,还有些迷糊
[/Quote]

我可没写 private <T> 啊!

尖括号中的 T 只是一个类型参数,代表一个类型,你用 A、B、C、D 26个英文字母都行,但 T 、 E 、 K 、V 是最常用的类型参数。分别代表的意思为:

1、T - Type 即类型的意思,最常用
2、E - Element 元素,通常用于泛型集合
3、K和V常用于哈希(hash)结构的集合中,K代表Key,即键的意思,V代表Value,即值的意思,hash结构就是键-值对。

至于你说网上没搜到,那只是你的搜索关键字不正确,你就搜索“泛型”二字就有一大把的资料。我也是这样“搜”刮学习知识的。加油吧!同志!
blazingfire 2009-05-16
  • 打赏
  • 举报
回复
private 没有啥吧?不用解释了
<T>表示定义了一个通用的类型(泛型,这也是泛型存在价值),实际使用的时候可能是String,也可能是Integer
djs36 2009-05-16
  • 打赏
  • 举报
回复
恩,谢谢ls

能在问下 private <T> 是什么意思呢,我网上没搜到
这几天正在看泛型,还有些迷糊
CodingMouse 2009-05-16
  • 打赏
  • 举报
回复
呵呵!正如火龙果兄说的那样,有点多此一举的感觉!

如果你对泛型理解得不深,就不要乱用泛型,还不如直接使用泛型技术未出现之前的类型安全处理方式:

if (XXX实例 instanceof XXX类型) {
XXX类型 变量名 = (XXX类型)XXX实例; // 就是类型强转
}

如果你坚持要用泛型,就好好地去看看相关的资料,主要有以下几个方面:

1、泛型通配符
2、泛型限定符
3、泛型擦除(与第5条的翻新结合着看,紧密相关,如果不翻新,就会被JVM擦除你指定的类型模板,被统一成Object)
4、泛型集合
5、泛型翻新(维持泛型的传递)

看完了之后,你就能明白下面这样的泛型签名是怎么回事了。

1、public abstract class BasePojo<T extends BasePojo<T>> implements Serializable, Comparable<T>
2、public class PojoCollection<E extends BasePojo<E>> extends Vector<E> implements Serializable, Comparator<E>
3、public abstract class AbstractBaseDao<T extends BasePojo<T>>
4、public abstract class BaseDao<T extends BasePojo<T>> extends AbstractBaseDao<T>

Good Luck!
djs36 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
感觉你这段代码很奇怪,有点中西结合的味道,用 ? 跟没用泛型没什么区别,
即然用了泛型,那 Map 也是不带泛型的。

Java codeprivate<T>List<T>test(Class<T>clazz, Map<String, String>map) {
List<T>list=newArrayList<T>();try{
T obj=(T)clazz.newInstance();
list.add(obj);
}catch(Exception e) {
e.printStackTrace();
}returnlist;
}
[/Quote]


恩,谢谢啦.

用<?> 是因为不然会有warning的提示.map是由于项目中用的是另一个class, 贴出来的时候我改成了map的时候忘加泛型了
sainer 2009-05-16
  • 打赏
  • 举报
回复
不怎么清楚,纯粹帮顶
  • 打赏
  • 举报
回复
感觉你这段代码很奇怪,有点中西结合的味道,用 ? 跟没用泛型没什么区别,
即然用了泛型,那 Map 也是不带泛型的。

private <T> List<T> test(Class<T> clazz, Map<String, String> map) {
List<T> list = new ArrayList<T>();
try {
T obj = (T)clazz.newInstance();
list.add(obj);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

62,614

社区成员

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

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