泛型:泛型类,泛型接口,泛型方法
2019-11-06 本文已影响0人
木头与琉璃
泛型类
同一个Holder类,在使用的时候可以灵活的持有String类型的类型参数和Interger类型的类型参数
public class 泛型类 {
public static void main(String[] args){
Holder<String> holder1 = new Holder("test");
System.out.println(holder1.getA()); // 输出结果:test
Holder<Integer> holder2 = new Holder(2);
System.out.println(holder2.getA()); // 输出结果:2
}
static class Holder<T>{
private T a;
public Holder1(T a){
this.a = a;
}
public T getA() {
return a;
}
}
}
泛型接口
同一个接口Genericitor,可以衍生两个不同类型参数的实现类:GenericitorString和GenericitorInteger
public class 泛型类与泛型接口与泛型方法 {
public static void main(String [] args){
System.out.println(new GenericitorString().next()); //执行结果:hello this is GenericitorString implements Genericitor<T>
System.out.println(new GenericitorInteger().next()); //执行结果:1
}
interface Genericitor<T>{
T next();
}
static class GenericitorString implements Genericitor<String>{
@Override
public String next() {
return "hello this is GenericitorString implements Genericitor<T>";
}
}
static class GenericitorInteger implements Genericitor<Integer>{
@Override
public Integer next() {
return 1;
}
}
}
泛型方法
同一个方法泛型方法genericitorFunction,使用的时候可以传入不同的类型参数。
public class 泛型方法 {
static class Genericitor{
public <T> void genericitorFunction(T x){
System.out.println(x.getClass().getName());
}
}
public static void main(String[] args){
Genericitor g = new Genericitor();
g.genericitorFunction("string"); //输出结果:java.lang.String
g.genericitorFunction(1); //输出结果:java.lang.Integer
g.genericitorFunction(1.0F); //输出结果:java.lang.Float
g.genericitorFunction(1.0); //输出结果:java.lang.Double
}
}