关于java中使用泛型设计的问题

「已注销」 2017-01-23 11:14:03
希望能在父类方法中用泛型的方式传入真实的类型,但是泛型无法在编译时识别具体类型,我又想用传入的这个类做set之类的赋值操作,然后再保存。如果直接传父类进行赋值操作又没法利用泛型得到真实的类型而没法保存,因为dao层是用了泛型能自动获得真实的子类dao,不知道怎么设计比较好
...全文
205 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO临时工Oo 2017-01-23
  • 打赏
  • 举报
回复

public class T {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		Set<User> sets = new HashSet<User>();
		IDao dao = new UserDao();
		dao.save(sets);
	}

}
class User{
	
}
interface IDao<T>{
	public void save(Set<T> sets);
}

class UserDao implements IDao<User>{

	@Override
	public void save(Set<User> sets) {
		// TODO Auto-generated method stub
		
	}
	
}
oO临时工Oo 2017-01-23
  • 打赏
  • 举报
回复
没搞懂你要实现什么,再给一段代码参考
import java.util.HashSet;
import java.util.Set;

public class T {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		IDao<User> dao = new UserDao();
		
		Set<User> sets = new HashSet<User>();
		dao.save(sets);
		
		SubUser user1 = new SubUser();
		Set<User> sets2 = new HashSet<User>();
		sets2.add(user1);
		dao.save(sets2);
	}

}


class User{
	
}
class SubUser extends User{
	public void test(){
		
	}
}

interface IDao<T>{
	public void save(Set<T> sets);
}

class UserDao implements IDao<User>{

	@Override
	public void save(Set<User> sets) {
		// TODO Auto-generated method stub
		for(User u : sets){
			if(u instanceof SubUser){
				SubUser subU = (SubUser)u;
				subU.test();
			}
		}
	}
	
}
「已注销」 2017-01-23
  • 打赏
  • 举报
回复
引用 1 楼 trocp 的回复:

public class T {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		Set<User> sets = new HashSet<User>();
		IDao dao = new UserDao();
		dao.save(sets);
	}

}
class User{
	
}
interface IDao<T>{
	public void save(Set<T> sets);
}

class UserDao implements IDao<User>{

	@Override
	public void save(Set<User> sets) {
		// TODO Auto-generated method stub
		
	}
	
}
你这个是最基本的泛型用法我也知道。如果是更复杂的情况呢,比如还有个subuser继承了user,我想要在userdao里去保存subuser,并且是传入subuser后还要做set的赋值操作再保存泛型怎么实现呢?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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