如何写一个以className.class作为参数的函数

zhangwuji154 2014-06-03 02:51:44
有一个数据库类函数,调用的时候是这样写
ds.find(MyObject.class).asList();

就把数据库里所有MyObject对象的数据作为list取出来了.

现在我要写一系列的类似的函数:
TA是抽象基类, TB是TA的实现.我想写这么一个函数

public <TA, TB> List<TA> getAllEntitys()
{
List<TA> list = new ArrayList<TA>();
for (TB s : ds.find(TB.class).asList()) {
list.add(s);
}
return list;
}


但是TB.class这样写,报错了.
...全文
328 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vuqrzk5w 2014-06-03
  • 打赏
  • 举报
回复
引用 4 楼 zhangwuji154 的回复:
谁能让这一段代码编译通过?

import java.util.ArrayList;
import java.util.List;

class ABase
{
	
}

class BSubClass extends ABase
{
	
}

public class testMain {

	@SuppressWarnings("unchecked")
	static <TA, TB> List<TA>  genericTest(List<TB> list)
	{
		List<TA> a = new ArrayList<TA>();
		for(TB t : list)
		{
			a.add((TA)t);
		}
		return a;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<BSubClass> list = new ArrayList<BSubClass>();
		ArrayList<ABase> a = genericTest(list);

	}

}
static <TA> List<TA> genericTest(List<? extends TA> list) { List<TA> a = new ArrayList<TA>(); for(TA t : list) { a.add(t); } return a; }
zhangwuji154 2014-06-03
  • 打赏
  • 举报
回复
谁能让这一段代码编译通过?

import java.util.ArrayList;
import java.util.List;

class ABase
{
	
}

class BSubClass extends ABase
{
	
}

public class testMain {

	@SuppressWarnings("unchecked")
	static <TA, TB> List<TA>  genericTest(List<TB> list)
	{
		List<TA> a = new ArrayList<TA>();
		for(TB t : list)
		{
			a.add((TA)t);
		}
		return a;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<BSubClass> list = new ArrayList<BSubClass>();
		ArrayList<ABase> a = genericTest(list);

	}

}
vuqrzk5w 2014-06-03
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/uid-122937-id-3804402.html ?extends通配符,向上造型一个泛型对象的引用
引用 2 楼 zhangwuji154 的回复:
改了一下,这样第一个问题是解决了,但第二个问题,没法告诉list,TB继承自TA
zhangwuji154 2014-06-03
  • 打赏
  • 举报
回复
改了一下,这样第一个问题是解决了,但第二个问题,没法告诉list,TB继承自TA
zhangwuji154 2014-06-03
  • 打赏
  • 举报
回复
public <TA, TB> List<TA> getAllEntitys() { List<TA> list = new ArrayList<TA>(); Class<TB> tb; for (TB s : ds.find(tb).asList()) { list.add(s); } return list; }

62,614

社区成员

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

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