1、介绍
是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样
2、使用
1.类参数的泛型
1.1模板:
class +类名<泛型>{
}
1.2泛型支持继承
public class MyFanParent<T> {
public void log(T t) {
if (t instanceof String) {
System.out.println(t);
}
}
public static void main(String[] args) {
MyFanParent parent = new MyFanParent<String>();
parent.log("ABC");
}
}
2.参数泛型的指向
public class MyFanParent<T extends MyT> {
public void log(T t) {
if (t instanceof MyT) {
System.out.println(t.getName());
}
}
public static void main(String[] args) {
MyFanParent parent = new MyFanParent<MyChildT>();
MyChildT childT=new MyChildT("abc")
parent.log(childT);
}
}
3.方法泛型
方法泛型的格式如下
修饰域+泛型 +返回类型+方法名
泛型也是可以继承。
public class MyFanParent {
//方法参数泛型
public <M> void getLogin(M m) {
}
//方法参数泛型
public <M extends MyT> void getLogin(M m) {
}
//方法参数泛型,带返回值
public <M extends MyT> M getLogin2(M m) {
return m;
}
// 静态方法调用
public static <M> void log(M m) {
}
// 静态方法调用
public static <M extends String> M logReturn(M m) {
return m;
}
//解析json泛型
public static <M> M getGson(JsonObject object, M m) {
Gson gson = new Gson();
M result = (M) gson.fromJson(object.toString(), m.getClass());
return result;
}
}
4.继承类的泛型
基类:
public class MyParentT <T>{
}
子类:
public class MySimple<M> extends MyParentT<M>{
}
三、详解
针对以上的方法,我们给出了常见的泛型使用,只要我们掌握了类的构造,了解泛型的规则。在处理工具类和模式设计有很大的提升。