泛型<T> <E> <K,V> 里面的 T E K V 分别是什么类型? 这样写有什么好处?目前,我知道 <String> <Student> 等 这样写的好处。

解决方案 »

  1.   

    k:key
    v:value
    就是所谓键值对
    这是由Map的数据结构所决定的
      

  2.   

    什么类型都可以,那个只是个占位符List<String> list = ....;
    这里String就相当于T或M或A或。。一般来说你不是自己创建泛型的类,都不需要自己写这些东东
      

  3.   


    别人写的代码,自定义类这样写的
    public class DBTransFlow<T> 
    {
    ...
    }T 好像就是个Object ,不知道这样写有什么好处
      

  4.   

    一般T我是个Table,
    通过hibernate的orm映射,
    所以实际使用的时候,实际是个hbm对应的entity。比如这样一段BaseHibernateDAO里面的    public ID save(T entity) {   
         logger.debug("saving Entity instance");
            try 
            {   
             logger.debug("save successful");
                return (ID)getHibernateTemplate().save(entity);  
            } 
            catch (RuntimeException re) 
            {   
             logger.error("save failed", re);
                throw re;   
            }   
        }  
    K V  1楼说了.
    实际基类里面看你随便定义了。
    不是自己使用的不需要关心,这个是OO。
    自己定义的 比如List<User> list = 自然不能缩写
      

  5.   

    public abstract class BaseHibernateDAO<T, ID extends Serializable> extends HibernateDaoSupport {  
      

  6.   

    好处就是进行类型检测如:public static <E> void debug(E e){
    .....
    }
    //这个e可以是任何的java对象
    //在调用的时候,可以不用做什么处理,在观察类方法说明时,它会自动将参数类型转化为你传的参数
    //还有?类型,?表示任何类型
    List<?> list=...
    List<? extends Object>
    //还有pk
    public class BaseDao<E,PK extends Serializable>{
    //这里的pk一般理解为主键,常用在数据库操作上面
    public E getById(PK pk){
       //.....
    }
    }
    //用的话就这样用
    BaseDao<JavaBean,java.lang.Integer> bd = new BaseDao<JavaBean,java.lang.Intger>();
    //关于T,我个人直接把它理解为type,类的type
    //如
    public static <T extends java.util.Date> T s2d(String s,Class<T> type){
    }
    s2d("20001010",java.sql.Date.class);
      

  7.   

    <T> <E> <K,V>这些字母都只是一个符号,你自己定义泛型类时,随便你自己写什么字母的,在实际使用中用自己的类名代替就可以了
      

  8.   

    如2楼所说,T E K V 是占位符,有以下测试类。public class User<T1,T2,T3>{
    private T1 t1;
    private T2 t2;
    private T3 t3;
    public User(){}
    public User(T1 t1,T2 t2,T3 t3){
    this.t1=t1;
    this.t2=t2;
    this.t3=t3;
    }
    public void main(String[] args){
    User u1=new User(1,"aa",23);
    User u2=new User("aa",new Date(),12);
    }
    }
    为什么不直接写成这样:
    class User2{
    private Object t1;
    private Object t2;
    private Object t3;
    public User2(){}
    public User2(Object t1,Object t2,Object t3){
    this.t1=t1;
    this.t2=t2;
    this.t3=t3;
    }
    public void main(String[] args){
    User u1=new User(1,"aa",23);
    User u2=new User("aa",new Date(),12);
    }
    }
    还请各位高手指点。