javaSE.Generic泛型

泛型

  • java泛型是jdk1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递;
  • 常见形式有:泛型类,泛型接口,泛型方法
  • 语法: <T,...> T称为类型占位符,表示一种引用类型;
  • 好处:1.提高代码的重用率;
    2.防止类型转换异常,提高代码的安全性;
    【注意】1. 只能是引用类型
    2. 不同泛型间不能相互赋值;

泛型集合

定义集合时,设置泛型,避免集合中装入不同类型的数据;

/**
 * 泛型类
 * 语法:类名<T>
 */
public class GenericClass<T> {
    //使用泛型
    //1.创建变量
    T t;
    //2.作为方法参数
    public void show(T t){
        System.out.println(t);
    }
    //3.作为方法返回值
    public T getT(){
        return t;
    }
}
/**
 * 泛型接口
 * 语法:接口名<T,...>
 * @param <T>
 */
public interface GenericInterface<T> {
    String name="tom";
    T server(T t);
}

public class InterfaceImpl implements GenericInterface<String>{

    @Override
    public String server(String s) {
        System.out.println("泛型接口,"+s);
        return s;
    }
}

/**
 * 泛型类继承
 * @param <T>
 */
public class InterfaceImpl2<T> implements GenericInterface<T> {
    @Override
    public T server(T t) {
        System.out.println("泛型类、泛型接口,"+t);
        return t;
    }
}
public class GenericMethod {
    public <T> T show(T t){
        System.out.println("泛型方法,"+t);
        return t;
    }
}
public class test {
    public static void main(String[] args) {
        //使用泛型类创建对象
        System.out.println("-----------String-----------");
        GenericClass<String> genericDemo=new GenericClass<String>();
        genericDemo.t="hello";
        genericDemo.show("hello word");
        String s=genericDemo.getT();
        System.out.println(s);
        System.out.println("------------Integer----------");
        GenericClass<Integer> genericDemo2=new GenericClass<Integer>();
        genericDemo2.t=100;
        genericDemo2.show(200);
        Integer integer=genericDemo2.getT();
        System.out.println(integer.toString());

        System.out.println("-----------接口实现 String-----------");
        InterfaceImpl impl=new InterfaceImpl();
        impl.server("hello");
        InterfaceImpl2<Integer> impl2=new InterfaceImpl2<>();
        impl2.server(100);
        GenericMethod genericMethod=new GenericMethod();
        genericMethod.show("Hello");
        genericMethod.show(100);
    }
}
上一篇:java面试题之BIO、NIO、AIO的应用场景


下一篇:使用Druid配置密码加解密