泛型类

作者: muyang_js的简书 | 来源:发表于2018-11-14 16:02 被阅读7次

注意:泛型类型必须是引用类型

泛型类,把泛型定义在类上

格式:public class 类名<泛型类型1,…>

把泛型定义在方法上

格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
class ObjectTool<T> {
    private T obj;
    public  T getObj() {
        return obj;
    }
    public void setObj(T obj) {
        this.obj = obj;
    }
}

泛型方法

class YEObjectTool {
    public <T> void show(T t) {
        System.out.println(t);
    }
}

泛型接口

把泛型定义在接口上

格式:public interface 接口名<泛型类型1…>
interface YEInter<T> {
    public  abstract  void show(T t);
}

实现类在实现接口的时候, 我们会遇到两种情况

第一种情况:已经知道是什么类型了

class YEInterImpl implements YEInter<String> {

    @Override
    public  void show(String t) {
        System.out.println(t);
    }
}

第二种:还不知道是什么类型

class YEInterImpl2<T> implements YEInter<T> {

    @Override
    public  void show(T t) {
        System.out.println(t);
    }
}

泛型高级(通配符)

  • 泛型通配符 < ?>
    任意类型,如果没有明确,那么就是Object以及任意的Java类了
  • ? extends E
    向下限定,E及其子类
  • ? super E
    向上限定,E及其父类
        //泛型如果明确的写的时候, 前后必须一致
        Collection<Object> c1 = new ArrayList<Object>();

        //? 表示任意的类型都是可以的
        Collection<?> c5 = new ArrayList<Object>();
        Collection<?> c6 = new ArrayList<Animal>();
        Collection<?> c7 = new ArrayList<Dog>();
        Collection<?> c8 = new ArrayList<Cat>();

        // ? extends E:向下限定, E及其子类
        Collection<? extends Animal> c10 = new ArrayList<Animal>();
        Collection<? extends Animal> c11 = new ArrayList<Dog>();

        // ? super E: 向上限定, E及其父类
        Collection<? super Animal> c12 = new ArrayList<Object>();
        Collection<? super Animal> C13 = new ArrayList<Animal>();

main函数中调用泛型类

 public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String> ();
        list.add("hello");
        list.add("world");
        list.add("yongen");
//     list.add(10);

        System.out.println("list:====="+list);
        Iterator<String>  it = list.iterator();
        while (it.hasNext()) {
            //String s = (String) it.next();
            String s = it.next();
            System.out.println("s:======" + s);
        }


       ======================================================= 
       =============    泛型类ObjectTool      ================= 
       ======================================================= 

        ObjectTool<String > ot = new ObjectTool<String>();
        ot.setObj("胡歌");
        ot.setObj(new String("李宗伟"));
        String s = ot.getObj();
        System.out.println("姓名是:====" + s);


        ObjectTool<Integer> ot2 = new ObjectTool<Integer>();
        ot2.setObj(new  Integer(10));
        Integer i = ot2.getObj();
        System.out.println("数字是:=====" + i);


       ======================================================= 
       ================   泛型方法   show      ================ 
       =======================================================
        YEObjectTool yot = new YEObjectTool();
        yot.show("Hello");
        yot.show(100);
        yot.show(true);


       ======================================================= 
       ===============      泛型接口 YEInter    =============== 
       =======================================================

        //第一种情况测试
        YEInter<String> i13 = new YEInterImpl();
        i13.show("hello");

        //第二种情况测试
        YEInter<String> i131 = new YEInterImpl2<String>();
        i131.show("javaeerr");

        YEInter<Integer> i132 = new YEInterImpl2<Integer>();
        i132.show(120);

 }

相关文章

  • Java 19-5.1泛型

    泛型类定义泛型类可以规定传入对象 泛型类 和泛型方法 泛型接口 如果实现类也无法确定泛型 可以在继承类中确定泛型:

  • 【泛型】通配符与嵌套

    上一篇 【泛型】泛型的作用与定义 1 泛型分类 泛型可以分成泛型类、泛型方法和泛型接口 1.1 泛型类 一个泛型类...

  • 泛型

    关于泛型类,泛型方法,泛型接口泛型类:public class FanXingLeiDemo {//这里是泛...

  • 泛型

    1.什么是泛型? 2.为什么需要泛型? 3.泛型类、接口 泛型类注意事项: 从泛型类派生子类 泛型接口 泛型接口的...

  • 泛型的使用

    泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法 泛型类 泛型接口 泛型通配符 泛型方法 静态方法与...

  • Java 泛型

    泛型类 例如 泛型接口 例如 泛型通配符 泛型方法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型上下边...

  • typescript入门-泛型

    基础定义 泛型接口 泛型类 泛型约束 使用类类型

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • 想理解泛型吗?看这一篇就够了!

    一、前言二、泛型类2.1 概述Java中泛型使用情况大致包括三种:泛型类、泛型接口、泛型方法 本节演示泛型类。 2...

  • 重走安卓进阶路——泛型

    ps.原来的标题 为什么我们需要泛型? 泛型类、泛型接口和泛型方法(泛型类和泛型接口的定义与泛型方法辨析); 如何...

网友评论

      本文标题:泛型类

      本文链接:https://www.haomeiwen.com/subject/gijjfqtx.html