写在之前
在写自己的一个项目的时候,遇到一个问题,如下代码:
12345 public static<T extends Model> LazyModelList<T>where(String query) {// 这里想获取泛型的T的Class,试了很多方法都不行// 不能用T.getClass的方法, T可以直接调用Model上的static方法return null;}
一开始想在static方法中获取子类方法的className,要实现的代码类似于:
这种方法是非法的,因为static方法不是虚函数,可以实现多态性,上面的代码是实现不了的
这里我其实对java的泛型的认识不是很清楚,本篇就针对此好好总结一下吧;
泛型
泛型一般用来构建容器类,保证容器类类型的安全,相当于模板,是一参数化类型。
泛型的使用
一般有三类,泛型类,泛型接口,泛型方法
泛型类:
|
|
实例化泛型类的时候,只要指定相应泛型为具体的类,即可,如上,ArrayList<E>
就将E
变成String
类,及为ArrayList<String>
;
泛型接口
|
|
泛型接口和泛型类很类似
泛型方法
|
|