Java泛型的使用限制实例分析

 更新时间:2019年08月07日 11:02:24   作者:cakincqm  
这篇文章主要介绍了Java泛型的使用限制,结合实例形式分析了不能使用java泛型的情况以及泛型使用的相关注意事项,需要的朋友可以参考下

本文实例讲述了Java泛型的使用限制。分享给大家供大家参考,具体如下:

一 什么情况下不能使用泛型

1 不能使用泛型的形参创建对象。

T o=new T();  // 不允许

2 在泛型类中,不能给静态成员变量定义泛型

public class A<T>
{
  public static T t; //错误
  public T getA(){ //正确
    ......
  }
}

3 泛型类不能继承java.lang.Throwable

public class D<T> extends java.lang.Throwable //错误

4 泛型类不能初始化一个数组

T[] b = new T[10]; //错误

二 怎样限制泛型的实例化

泛型类名<T extends 超类>

三 实战

1 代码

public class Base<T extends supA> {
  T m;
  Base( T t ) {
    m = t;
  }
  public T getM() {
    return m;
  }
  public void print() {
    System.out.println("base print : " + m);
  }
  public static void main( String[] args ) {
    B bb = new B("test B");
    Base<B> base = new Base<B>(bb);//允许
    //Base<String> base=new Base<String>("base class is general");//不允许
    System.out.println(base.getM());
    supA aa = new supA();
    Base<supA> base1 = new Base<supA>(aa);
    System.out.println(base1.getM());
  }
}
class supA {
  public String toString() {
    return "supA";
  }
}
class B extends supA {
  String b;
  public B( String b ) {
    this.b = b;
  }
  public String toString() {
    return "subB";
  }
}

2 运行

subB
supA

3 说明

通过T extends supA将泛型实例化对象限制到必须是supA或supA的子类。

supA可以是接口,但是extends不能换成implements,必须使用extends

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java实现差分数组的示例详解

    Java实现差分数组的示例详解

    差分数组是由原数组进化而来,值为原数组当前位置值减去上一个位置的值。本文将通过例题详解如何利用Java实现差分数组,需要的可以参考一下
    2022-06-06
  • Java由浅入深学习数组的使用

    Java由浅入深学习数组的使用

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素
    2022-05-05
  • Spring Boot中的过滤器拦截器监听器使用技巧汇总

    Spring Boot中的过滤器拦截器监听器使用技巧汇总

    本文将介绍在Spring Boot应用程序中使用过滤器、拦截器和监听器的使用技巧,我们将讨论它们之间的区别,以及何时使用它们,我们还将提供代码示例,以帮助您在自己的应用程序中使用它们
    2023-12-12
  • Java 中 hashCode() 与 equals() 的关系(面试)

    Java 中 hashCode() 与 equals() 的关系(面试)

    这篇文章主要介绍了Java中hashCode()与equals()的关系,ava中hashCode()和equals()的关系是面试中的常考点,文章对hashCode与equals的关系做出详解,需要的小伙伴可以参考一下
    2022-09-09
  • 深入了解Springboot核心知识点之数据访问配置

    深入了解Springboot核心知识点之数据访问配置

    这篇文章主要为大家介绍了Springboot核心知识点中的数据访问配置,文中的示例代码讲解详细,对我们了解SpringBoot有一定帮助,快跟随小编一起学习一下吧
    2021-12-12
  • Spring Boot 实现图片上传并回显功能

    Spring Boot 实现图片上传并回显功能

    本篇文章给大家分享Spring Boot 实现图片上传并回显功能,文中通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • java利用正则表达式处理特殊字符的方法实例

    java利用正则表达式处理特殊字符的方法实例

    这篇文章主要给大家介绍了关于java利用正则表达式处理特殊字符的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 如何基于SpringBoot部署外部Tomcat过程解析

    如何基于SpringBoot部署外部Tomcat过程解析

    这篇文章主要介绍了SpringBoot以war包形式部署到外部Tomcat过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java并发之Condition案例详解

    Java并发之Condition案例详解

    这篇文章主要介绍了Java并发之Condition案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • java中如何对arrayList按数字大小逆序排序

    java中如何对arrayList按数字大小逆序排序

    这篇文章主要介绍了java中如何对arrayList按数字大小逆序排序问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论