zoukankan      html  css  js  c++  java
  • 自定义类使用泛型and方法使用泛型

    使用泛型的自定义类,泛型可以使用任意的数据类型,在创建对象的时候确定是什么数据类型,创建对象的时候不使用泛型,那就默认是Object类型
    格式:

    使用泛型的自定义类

    package cn.zhuobo.day10.aboutGeneric;
    
    public class ClassGeneric<E> {
        private E name;
    
        public ClassGeneric() {
        }
    
        public ClassGeneric(E name) {
            this.name = name;
        }
    
        public E getName() {
            return name;
        }
    
        public void setName(E name) {
            this.name = name;
        }
    }
    
    

    创建对象

    package cn.zhuobo.day10.aboutGeneric;
    
    public class MainGeneric {
        public static void main(String[] args) {
            ClassGeneric<String> a = new ClassGeneric<>();
            ClassGeneric<Integer> b = new ClassGeneric<>();
        }
    }
    
    

    含有泛型的方法:

    格式:泛型定义在方法的返回值类型和权限修饰符之间

    修饰符 <泛型> 返回值类型 方法名(使用泛型的参数列表) {
    
    } 
    

    含有泛型的方法,在调用的时候确定数据类型,传递的参数是什么类型,泛型就是什么类型

    public <M> void method(M m) {
            System.out.println(m);
    }
    
    public static  <M> void method11(M m, int a) {
            if(a > 0) System.out.println(m);
    }// 静态方法是类共有的,不用创建对象(虽然说也可以),直接类名调用静态方法
    

    含有泛型的接口

    泛型通配符

    泛型通配符:?
    代表任意的数据类型
    不能创建 对象使用,只能作为方法的参数使用
    比如我有两个ArrayList集合,一个是Integer,另一个是String,但是我希望这两个集合都可以被同一个方法遍历

    public static void main(String[] args) {
            ArrayList<Integer> list1 = new ArrayList<>();
            ArrayList<String> list2 = new ArrayList<>();
            method1(list1);
            method1(list2);
    }
    
    // method1的定义和实现如下:
        public static void method1(ArrayList<?> list) {
            Iterator it = list.iterator();
            while(it.hasNext()) {
                Object next = it.next();// 返回的是Object类型,因为只有Object才能接收任意的类型
                System.out.println(next);
            }
        }
    

    泛型通配符的限定:

    上限限定:<? extends E>: 使用的泛型必须是E或者E的子类
    下限限定:<? super E> :使用的泛型必须是E或者E的父类
  • 相关阅读:
    移动端touch与click区别--移动端开发整理笔记(五)
    移动端适配(rem & viewport)--移动端开发整理笔记(四)
    移动端事件(touchstart、touchmove、touchend)--移动端开发整理笔记(三)
    Flex弹性盒模型(新老版本完整)--移动端开发整理笔记(二)
    meta设置与去除默认样式--移动端开发整理笔记(一)
    react native ios 上架
    react16 路由按需加载、路由权限配置
    mpvue 页面预加载,新增preLoad生命周期
    mpvue 星星打分组件
    mpvue 签字组件
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10625332.html
Copyright © 2011-2022 走看看