zoukankan      html  css  js  c++  java
  • 泛型

    泛型

    • java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传第。
    • 常见形式有泛型类、泛型接口、泛型方法。
    • 语法
      • <T,...> T作为类型占位符,表示一种引用类型。
    • 好处:
      • 提高代码的重用性
      • 防止类型转换异常,提高代码的安全性

    泛型类

    /**
     * 泛型类
     * 语法:类名<T>
     * T表示类型占位符,表示一种引用类型,可以写多个,用逗号隔开
     */
    public class MyGeneric<T> {
        //使用泛型T
        //1.创建变量  不能实例化
        T t;
    
        //2.添加方法  泛型作为参数
        public void show(T t){
            System.out.println(t);
        }
    
        //3.使用泛型作为方法的返回值
        public T getT(){
            return t;
        }
    
    }
    
    public class Test {
        public static void main(String[] args) {
            //使用泛型类创建对象
            //泛型只能是引用类型  不同的泛型类型对象之间不能相互赋值
            MyGeneric<String> myGeneric = new MyGeneric<>();
            myGeneric.t = "hello";
            myGeneric.show("你好");
            String String = myGeneric.getT();
    
            MyGeneric<Integer> myGeneric1 = new MyGeneric<>();
            myGeneric1.t = 12;
            myGeneric1.show(34);
            System.out.println(myGeneric1.getT());
        }
    }
    
    
    

    泛型接口

    /**
     * 泛型接口
     * 语法:接口名<T>
     * 注意:不能创建泛型静态常量
     */
    public interface MyInterface<T> {
        String name = "张三";
        T server(T t);
    }
    
    
    public class MyInterfaceImpl implements MyInterface<String>{ //方法1:直接确定类型
        @Override
        public String server(String s) {
            System.out.println(s);
            return s;
        }
    }
    //测试代码:
    //MyInterfaceImpl myInterface = new MyInterfaceImpl();
    //myInterface.server("a");
    
    
    public class MyInterfaceImpl2<T> implements MyInterface<T> {  //方法2:让实现类也成为泛型类
        @Override
        public T server(T t) {
            System.out.println(t);
            return t;
        }
    }
    //测试代码:
    //MyInterfaceImpl2<Integer> myInterfaceImpl2 = new MyInterfaceImpl2<>();
    //myInterfaceImpl2.server(1112);
    

    泛型方法

    /**
     * 泛型方法
     * 语法:<T> 返回值类型
     */
    public class MyGenericMethod {
        //泛型方法
        public <T> T show(T t){  //调用方法时根据所传递的参数类型来判断是什么类型
            System.out.println("泛型方法");
            System.out.println(t);
            return t;
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            //调用泛型方法
            MyGenericMethod myGenericMethod = new MyGenericMethod();
            myGenericMethod.show("a");
            myGenericMethod.show(2);
            myGenericMethod.show(2.2);
    
        }
    }
    
    

    泛型集合

    • 概念:参数化类型、类型安全的集合、强制集合的元素的类型必须一致。
    • 特点
      • 编译时即可检查,而非运行时抛出异常
      • 访问时,不必类型转换(拆箱)
      • 不同泛型之间引用不能相互赋值,泛型不存在多态
  • 相关阅读:
    IO 输入输出流
    「做自己」​​​​​​​写出我心(八十)
    「关于爱情,关于婚姻」​​​​​​​写出我心(七十九)
    「如何冥想?」​​​​​​​写出我心(七十八)
    「对这个世界温柔一点」​​​​​​写出我心(七十七)
    「7tips-克服焦虑」​​​​​写出我心(七十六)
    「十步学习法」​​​​写出我心(七十五)
    「成功的人生是台阶式向上」​​​写出我心(七十四)
    「世界是自己的」​​写出我心(七十三)
    「​八点工作中的小建议」​写出我心(七十二)
  • 原文地址:https://www.cnblogs.com/qiudajiang/p/13262682.html
Copyright © 2011-2022 走看看