当前位置: 代码迷 >> J2EE >> 关于Class<T> entityClazz和T entity的有关问题
  详细解决方案

关于Class<T> entityClazz和T entity的有关问题

热度:559   发布时间:2016-04-17 22:56:31.0
关于Class<T> entityClazz和T entity的问题
本帖最后由 okbutwhy 于 2015-11-13 02:08:25 编辑
小弟最近在练习SSH的项目整合,但是在最基础的DAO层就遇到了不懂的问题。

public interface BaseDao<T>
{
// 根据ID加载实体
T get(Class<T> entityClazz , Serializable id);
// 保存实体
Serializable save(T entity);
// 更新实体
void update(T entity);
// 删除实体
void delete(T entity);
// 根据ID删除实体
void delete(Class<T> entityClazz , Serializable id);
// 获取所有实体
List<T> findAll(Class<T> entityClazz);
// 获取实体总数
long findCount(Class<T> entityClazz);
}

如上面看到的,我不是很理解为什么有的地方用Class<T>,有的地方就用T就可以了?
说下我现在的理解,这里的BaseDao<T>是用了泛型,然后在子类实现接口的时候把需要的类型替换T就可以了。但是里面的Class<T>和T的区别就不是很懂了。有的人说class<T>是获取T类型的一组List,是这样吗?请各位指点一下迷津
------解决思路----------------------
这种用法Class<T>首先它不是集合类型
它是表明了Class类所指代的具体类类型
------解决思路----------------------
你上面因为getSessionFactory 这个方法需要你传入一个class ,,所以你Class 这种类型和get 没有关系。

比如下面这样的传入的class 
引用:
 
Class<? extends Collection> someCollectionClass = someMethod();
  

还有其他的写法
你有可以看看<? super E> and <? extends E>?
  相关解决方案