最近在练习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,是这样吗?请各位指点一下迷津
解决方案:10分
这种用法Class<T>首先它不是集合类型
它是表明了Class类所指代的具体类类型
它是表明了Class类所指代的具体类类型
解决方案:30分
你上面原因是getSessionFactory 这个方法需要你传入一个class ,,所以你Class 这种类型和get 没有关系。
例如下面这样的传入的class
还有其他的写法
你有可以看看<? super E> and <? extends E>?
例如下面这样的传入的class
还有其他的写法
你有可以看看<? super E> and <? extends E>?