• Java——集合——泛型——定义和使用含有泛型的类


     

    ava 中泛型标记符:

    • E - Element (在集合中使用,因为集合中存放的是元素)
    • T - Type(Java 类)
    • K - Key(键)
    • V - Value(值)
    • N - Number(数值类型)
    •  - 表示不确定的 java 类型

    定义和使用含有泛型的类

    定义一个含有泛型的类,模拟ArrayList集合

    • 泛型是一个未知的数据类型,当我们不确定什么什么数据类型的时候,可以使用泛型
    • 泛型可以接收任意的数据类型,可以使用Integer,String,Student...
    • 创建对象的时候确定泛型的数据类型

    定义格式:

    修饰符 class 类名<代表泛型的变量> {  }
    
    

    例如,API中的ArrayList集合:

    class ArrayList<E>{ 
        public boolean add(E e){ }
    
        public E get(int index){ }
       	....
    }
    
    

    使用泛型: 即什么时候确定泛型。

    在创建对象的时候确定泛型

    例如,ArrayList<String> list = new ArrayList<String>();
    时,变量E的值就是String类型,那么我们的类型就可以理解为:

    class ArrayList<String>{ 
         public boolean add(String e){ }
    
         public String get(int index){  }
         ...
    }
    
    

    再例如,ArrayList<Integer> list = new ArrayList<Integer>();
    此时,变量E的值就是Integer类型,那么我们的类型就可以理解为:

    class ArrayList<Integer> { 
         public boolean add(Integer e) { }
    
         public Integer get(int index) {  }
         ...
    }
    
    

    举例自定义泛型类

    public class MyGenericClass<MVP> {
    	//没有MVP类型,在这里代表 未知的一种数据类型 未来传递什么就是什么类型
    	private MVP mvp;
         
        public void setMVP(MVP mvp) {
            this.mvp = mvp;
        }
         
        public MVP getMVP() {
            return mvp;
        }
    }
    
    

    使用:

    public class GenericClassDemo {
      	public static void main(String[] args) {		 
             // 创建一个泛型为String的类
             MyGenericClass<String> my = new MyGenericClass<String>();    	
             // 调用setMVP
             my.setMVP("大胡子登登");
             // 调用getMVP
             String mvp = my.getMVP();
             System.out.println(mvp);
             //创建一个泛型为Integer的类
             MyGenericClass<Integer> my2 = new MyGenericClass<Integer>(); 
             my2.setMVP(123);   	  
             Integer mvp2 = my2.getMVP();
        }
    }
    
    

    1.含有泛型的类

    public class GenericClass<E> {
        private E name;
    
        public E getName() {
            return name;
        }
    
        public void setName(E name) {
            this.name = name;
        }
    }
    
    

    2.测试类

    package com.itheima.demo03.Generic;
    
    public class Demo02GenericClass {
        public static void main(String[] args) {
            //不写泛型默认为Object类型
            GenericClass gc = new GenericClass();
            gc.setName("只能是字符串");
            Object obj = gc.getName();
    
            //创建GenericClass对象,泛型使用Integer类型
            GenericClass<Integer> gc2 = new GenericClass<>();
            gc2.setName(1);
    
            Integer name = gc2.getName();
            System.out.println(name);
    
            //创建GenericClass对象,泛型使用String类型
            GenericClass<String> gc3 = new GenericClass<>();
            gc3.setName("小明");
            String name1 = gc3.getName();
            System.out.println(name1);
        }
    }
    
     
  • 相关阅读:
    Linux查看CPU信息
    sed总结
    angularjs学习笔记--service、$http、$scope、angularjs指令、事件、api
    angularjs学习笔记--ng-model、controller、DI、$scope、$provide
    angularjs学习笔记--$http、数据渲染到表格、路由、依赖注入、provider
    angularjs学习笔记--主html&template html&module&template js、模块、控制器、双向数据绑定、过滤器
    angularjs学习笔记--视图、模板、组件、$http、$q、module
    angular学习笔记---下载并运行nicefish项目
    angular学习笔记---通过angular/cli建一个新的项目
    json模拟数据交互
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16906037.html
Copyright © 2020-2023  润新知