当前位置: 首页 > news >正文

Java开发知识之Java中的泛型

        Java开发知识之Java中的泛型

一丶简介什么是泛型.

    泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了.

这样是可以的.

二丶Java中的泛型

  Java中,所有类的父类都是Object类.所以定义泛型的时候,设计长须的话传入的值与返回的值都是Object类型为主.如果是用具体的实例,就要进行转换了.具体参考向上转型,跟向下转型.

JDK 1.5版本才有了泛型机制.

语法如下:

  

class 类名<T >{
    public T a;
    public T b;
        
    public void SetNumber(T Number){
         this.a = Number;
    } 
}

可以看到.其实数据类型都用T替换了. T我们可以定义为任何都是可以的.它只是代表一个类型而已.

使用的时候传入数据类型

创建实例:

  类名<T> a = new 类名<T>(); 

   int count = a.Add(10,11); 

泛型可以传递多个泛型.可以代表更多的泛型.

代码如下:

  

public class Number<T,T1,T2> {

    private T a;
    private T1 b;
    private T2 c;
    
    public Number() {
        // TODO 自动生成的构造函数存根
    }
    public void SetNumber(T Number) {
        this.a = Number;
    }
    

}
使用:
    类名<T,T1> a = new <T,T1>();

我们可以看到.使用泛型的时候我们需要传递数据类型.去初始化这个类.这样的话这个类就叫做泛型类.

这中类型的类不会触发 ClasCastException异常的.因为在编译器中就可以检查类型匹配是否正确.

PS: 定义泛型类的时候.泛型名称一般是T来表达. 而容器的元素.,就使用E来表达.具体设置我们可以查询JDK 5.0以上的API看.

三丶泛型中需要注意的地方.

  1.成员变量是数组

    当成员变量是数组.我们可以定义数组,例如:

    public T a[] ;

    但是不能对其初始化 

    public T a[] = new T[10]; 这是错误的.

    此时,我们只能设置Set方法.为数组赋值.

    public void SetArray(T[] array) {

                 this.a = array;

    }

  而常规类可以

    public int a[] = new int[10];

  2.泛型类限制

我们的泛型类可以对其做限制.比如你必须继承某各类.或者实现某个借口才能使用这个类

具体语法;

  

public class <T extends AnyClass/Intface>

无论你是借口还是类.我们都要加上extends才可以. 意思就是说.如果指定了类.那么必须继承这个类你才能用.

如果传入接口.那么你必须实现这个接口才行.

使用:

  类名<类/接口> a = new 类名<类/接口>();

`3.类型通配符

   Java中针对泛型的限制,提供了类型通配符. 作用就是创建一个泛型类的对象的时候.

限制一下.这个泛型类的类型实现.或者继承某个接口,或类的子类.

简而意之就是常见对象的时候.我可以限制你.你必须实现那个类. 或者实现那个接口.

代码如下:

  

类名<? extends list> a = null; 泛型的话表示类型位未知
需要使用泛型对象的时候.单独实例化.
a = new A<ArrayList>();

ArrayList 是 List的子类. 意思就是.我可以在new对象的时候.传入它的子类.
或者某一类是实现指定接口的类.

总结: 总结来说,就是限制实例化, 如果指定了某一个类.那么创建实例的时候可以是它的子类. 如果指定了接口

那么可以是实现它接口的类都是可以的.

四丶泛型类的继承

   我们的泛型类可以继承.跟普通类一样.只不过过了泛型而已. 泛型类也可以继承普通类.

语法:

  

public class Father<T>{
}
public class Child<T1,T2> extends Father<T>{
}

我们的Child子类.继承父类的时候,指明了它的泛型类型.如果不指定.则Child中的 泛型 (T1,T2)

都会自动的变成Object. 所以一般的情况下.都会保留父类的泛型.也就是指明一下.

 

五丶泛型总结

  1.Java中的泛型是Object.可以在类声明上指明

    1.类声明

        class <T> {};

    2.成员变量成名

        public T a;

    3.成员方法声明

      public T AAA(T a, T b){}

  2.泛型注意

    泛型中,数组可以声明,但是不能对其初始化.或者new内存,比如提供方法.对其赋值.

  3.Java中的其他语法

    3.1 泛型限制

      泛型中可以限制你必须继承某各类,并且传入的时候.比如是这个类.

语法:

  public class Test<T extends 类/接口>{}

  Test<类/接口> a = new Test<类/接口>();

    3.2泛型限制,可以实现子类或者接口

      在泛型限制的前提下.我们可以使用通配符.来表示一个类.这个类可以是我们指定的限制类的子类. 如果是接口,那么可以是实现接口的类.

语法:

  class Test<? extends List>{};

使用:

  Test <ArrayList> a = new Test<ArrayList>();  

  ArrayList是list的子类,满足 ? 这个通配符. 

  

  

  

转载于:https://www.cnblogs.com/iBinary/p/9818724.html

相关文章:

  • {防}5--WMI入侵的防范
  • 开撕队-软件需求规格说明书
  • 根据企业信息化应用需求来分析工作流平台的选型
  • 约束
  • 办公室女性的心得感悟:生活中最重要的五句话
  • Sabota?
  • 受损Wave文件修复
  • c/c++ llinux epoll系列4 利用epoll_wait实现非阻塞的connect
  • 清蒸鲈鱼
  • Ubuntu18.0.4配置Hadoop1.2.1环境
  • 海缆修好之前,上网悠着点
  • Agc017_D Game on Tree
  • CPU占用率高的九种可能
  • c# richTextBox判断是否为图片文件
  • [NowCoder]牛客OI周赛3
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【5+】跨webview多页面 触发事件(二)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 5、React组件事件详解
  • Docker入门(二) - Dockerfile
  • Golang-长连接-状态推送
  • Gradle 5.0 正式版发布
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • js
  • JSONP原理
  • js继承的实现方法
  • php中curl和soap方式请求服务超时问题
  • 初识MongoDB分片
  • 从零开始的无人驾驶 1
  • 后端_ThinkPHP5
  • 如何合理的规划jvm性能调优
  • 少走弯路,给Java 1~5 年程序员的建议
  • 实现简单的正则表达式引擎
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何正确理解,内页权重高于首页?
  • #14vue3生成表单并跳转到外部地址的方式
  • #DBA杂记1
  • $.ajax()方法详解
  • $L^p$ 调和函数恒为零
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (poj1.2.1)1970(筛选法模拟)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (算法设计与分析)第一章算法概述-习题
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET/C# 的字符串暂存池
  • .NET学习教程二——.net基础定义+VS常用设置
  • .pop ----remove 删除
  • @Autowired和@Resource装配
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [Android] Amazon 的 android 音视频开发文档
  • [Android]Tool-Systrace
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C#]猫叫人醒老鼠跑 C#的委托及事件