不太明白T和?号的使用,T应该是指Type市类型.?应该是通配符可以代表所有是吗?问题1:什么时候该用T 什么时候该用?呢  重点: 麻烦求解;问题2:我在接口中定义了?的使用.然后实现 下面是代码: public List<?> add();//这里应该用T还是应该用? List<这里放对象,对象不能用T来表示吧?我这里放?合适吗>        实现的话public List<A> add()//A是对象;
        //T应该怎么定义? 在什么时候定义? 怎么去继承使用呢? 麻烦求解;

解决方案 »

  1.   

    T 是Template,即模板的意思,java这种就叫做泛型,java泛型在应用有利于类型转换的时候,平常我们在类型转换的时候需要在前面加个(),然后里面在写强转类型,而声明是某个类的泛型后就不需要写,直接转换;这种情况也体现在多态上,父子类的类型转换的时候直接声明为,某某类是某某类的泛型就可以了。
      

  2.   

    一般List.add()什么类型的话,就写什么类型例如:List<String> strs = new ArrayList<String>();strs.add("str1");
      

  3.   

    什么T又?的,一头雾水。直接加类型呀,如List<Object> lists = new ArrayList<Object>();
      

  4.   

    public interface BaseDao<T extends Serializable,K extends Serializable> {
    public void save(T entity); public T findById(Class<T> clazz, K entityId); public void update(T entity); public void delete(T entity); public List<T> findAll(String hql);
    }public class BaseDaoImpl<T extends Serializable,K extends Serializable> implements BaseDao<T, K> {

    @PersistenceContext 
    protected EntityManager em;

    /**
     * 刪除
     */
    public void delete(T entity) {
    em.remove(entity);
    }

    /**
     * 根据ID查询
     */
    public T findById(Class<T> clazz,K entityId) {
    return em.find(clazz, entityId);
    }

    /**
     * 保存
     */
    public void save(T entity) {
    em.persist(entity);
    }

    /**
     * 修改
     */
    public void update(T entity) {
    em.merge(entity);
    } /**
     * 查询所有
     */
    @SuppressWarnings("unchecked")
    public List<T> findAll(String hql) {
    return em.createQuery(hql).getResultList();
    }}
      

  5.   

    T是template的意思 那上面代码中的K是什么意思呢?.
    public class BaseDaoImpl <T extends Serializable,K extends Serializable> implements BaseDao <T, K> {
    什么情况下该用T呢? 什么情况下该用?呢?
      

  6.   

    public List <A> add()
    不明白,你添加方法干吗返回List 泛型?List<T> T是object类型。什么类型都可以。A实体当然也可以