zoukankan      html  css  js  c++  java
  • JavaSE-17 泛型

    学习要点

    • 泛型接口
    • 泛型类
    • 泛型方法
    • 多参数泛型类
    • 泛型类的继承

    泛型的定义

    允许在定义类、接口、方法时使用类型形参,类型形参将会在声明变量、创建对象或者调用方法时候动态指定。

    泛型接口

    1  定义

    泛型接口就是拥有一个或多个类型参数的接口

    2  语法

    public interface 接口名<类型形参> {
    
        类型形参 方法名(类型形参 类型形参实例);
    
    }
    

    3  代码示例

    /** 泛型接口 */
    
    public interface IGeneric<T> {
    
       public T getName(); // T类型由外部决定
    
     
    
       public void setName(T t);// 方法参数类型有外部决定
    
    }
    

    泛型类

    1  定义

    泛型类就是具有一个或者多个类型参数的类。

    2  语法

    public class 类名<类型形参>  {
    
        方法名(类型形参 类型形参实例) {
    
            方法执行体
    
        }
    
    }
    

      

    3  示例代码

    /** 泛型类 */
    
    public class Person<T> implements IGeneric<T> {// 实现泛型接口
    
       private T t;
    
       public Person(T t) {
    
           this.setName(t);
    
       }
    
       @Override
    
       public T getName() {
    
           return this.t;
    
       }
    
       @Override
    
       public void setName(T t) {
    
           this.t = t;
    
       }
    
    }
    
     
    
    /** 测试类 */
    
    public class Test {
    
       public static void main(String[] args) {
    
           IGeneric<String> p = new Person<String>("张三");
    
           System.out.println(p.getName());
    
       }
    
    }
    

      

    泛型方法

    1  定义

    泛型方法就是带有类型参数的方法。

    泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。方法中的类型参数作用范围只在方法中。

    2  语法

    修饰符<类型形参> 返回值 方法名(不指定|类型形参|正常参数,……) {
    
        方法体
    
    }
    

      

    3  示例代码

    /**泛型方法:判断数据类型*/
    
    public class ObjectTypeJudge {
    
       public <T> void judgeMethod(T t){
    
           System.out.println("数据类型是:"+t.getClass());//获取类定义信息
    
       }
    
    }
    
     
    
    /** 测试类 */
    
    public class Test {
    
       public static void main(String[] args) {
    
           ObjectTypeJudge otj=new ObjectTypeJudge();
    
           otj.judgeMethod(100);
    
           otj.judgeMethod("hello");
    
           otj.judgeMethod(123.4f);
    
           otj.judgeMethod(321.23);
    
       }
    
    } 
    

    4  测试结果

    上机练习

    需求描述

    • 定义泛型接口并添加获取字段方法,将类型参数做为此方法返回类型。
    • 定义泛型类实现上述泛型接口,添加一个字段并将类型参数作为字段的类型,在构造函数中初始化此字段。
    • 在main()方法中实例化泛型接口,调用获取字段方法并打印。

    多参数泛型类

    1  语法

    例如Map常用的实现类:HashMap<K,V>属于多个参数的泛型类。

    2  示例代码

    /**多参数泛型类*/
    
    public class GenericMulPara<T, V> {
    
       private T a;
    
       private V b;
    
       public GenericMulPara(T a, V b) {
    
           this.a = a;
    
           this.b = b;
    
       }
    
       public void showType() {
    
           System.out.println("a的类型是" + a.getClass().getName());
    
           System.out.println("b的类型是" + b.getClass().getName());
    
       }
    
    }
    

    泛型类的继承

    1  定义

    • 面向对象的特性同样适用于泛型类,所以泛型类也可以被继承。
    • 继承了泛型类的子类,必须也是泛型类。

    2  语法

    class 子类<T>  extends  父类<T>  {
    
    }
    

      



    本博客文章未经许可,禁止转载和商业用途!

    如有疑问,请联系: 2083967667@qq.com


  • 相关阅读:
    iOS 从0到1搭建高可用App框架
    ios 判断用户是否开启权限---并跳转设置
    用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做
    示例浅谈PHP与手机APP开发,即API接口开发
    iOS百度地图简单使用详解
    UICollectionViewCell「居左显示」
    IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息
    iOS开发融云即时通讯集成详细步骤
    iOS
    修改hosts文件
  • 原文地址:https://www.cnblogs.com/rask/p/8254007.html
Copyright © 2011-2022 走看看