我自己写的一个JAVA泛型问题
public class Tree<T> { private T self; private List<T> childs; public T getSelf() { return self; } public void setSelf(T self) { this.self = self; } public List<T> getChilds() { return childs; } public void setChilds(List<T> childs) { this.childs = childs; } }
在一个DAO实现里面用这个泛型类
public List<Tree> buildRoleTreeF(List<Role> list) { List<Tree> Trees=new ArrayList<Tree>(); List<Role> roots=findAllRoots(list); if(roots.size()>0){ for(Role root:roots){ Tree<Role> Tree=new Tree<Role>(); Tree.setSelf(root); List<Role> childs=findAllChilds(root,list); Tree.setChilds(childs); Trees.add(Tree); } return Trees; }else{ return null; } } List<Role> list=bean.getList(); List<Tree> roleTrees=bean.buildRoleTreeF(list); for(Tree rt:roleTrees){ System.out.println(rt.getSelf()); }
为什么rt.getSelf取出来的时候还是要转型呢,泛型存进去的时候指定的类型不是不用转了么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
谢谢咯,明白 了!!!谢谢大家了,呵呵
我改成这样了还是要转捏
public List<Tree<Role>> buildRoleTreeF(List<Role> list) {
List<Tree<Role>> Trees=new ArrayList<Tree<Role>>();
List<Role> roots=findAllRoots(list);
if(roots.size()>0){
for(Role root:roots){
Tree<Role> Tree=new Tree<Role>();
Tree.setSelf(root);
List<Role> childs=findAllChilds(root,list);
Tree.setChilds(childs);
Trees.add(Tree);
}
return Trees;
}else{
return null;
}
}
这里取:
List<Role> list=bean.getList();
List<Tree<Role>> roleTrees=bean.buildRoleTreeF(list);
for(Tree rt:roleTrees){
System.out.println(rt.getSelf());
}
你写成 Tree<Role> 就不用转了
DONG DONG能说具体点么,我学JEE没多久,真没看出来哪里出问题了
你的泛型写的不完整,List你用了,但是Tree没用,你定义了泛型但是要用才行啊...
List<Tree<Role>>
必须要转的
啊啊啊,好像可以不用转的,在我在一个JEE学习的群里提问,人家看到哪里问题了就是不说~~~
当然要转啦,因为你写的是 for(Tree rt ....) 应该改为 for(Tree<T> rt...) 其中 T 就是你 Tree 中的对象类型