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多线程中停止线程遇到线程阻塞的处理方法详解,在阻塞状态下,线程会释放CPU资源,从而允许其他线程执行,线程阻塞是实现多线程编程中重要的概念,可以提高程序的效率和资源利用率,需要的朋友可以参考下
    2023-10-10
  • 浅谈BeanPostProcessor加载次序及其对Bean造成的影响分析

    浅谈BeanPostProcessor加载次序及其对Bean造成的影响分析

    这篇文章主要介绍了浅谈BeanPostProcessor加载次序及其对Bean造成的影响分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动

    SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动

    这篇文章主要介绍了SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Spring Boot Starters简介及其优劣势

    Spring Boot Starters简介及其优劣势

    在这篇文章中,我们将向你介绍Spring Boot Starters,并将讨论Spring Boot Starters的优点和优势,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • JAVAE中servlet的概念及使用示例详解

    JAVAE中servlet的概念及使用示例详解

    servlet是一种实现动态页面的技术,他是由tomcat提供给程序员的一组API可以帮助程序员开发一个web程序,这篇文章主要介绍了JAVAE中servlet的概念及使用,需要的朋友可以参考下
    2024-05-05
  • Java中MapStruct复制对象的具体使用

    Java中MapStruct复制对象的具体使用

    MapStruct是一个用于Java的代码生成器,可以自动生成类型安全的Bean映射代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • spring启动错误Singleton bean creation not allowed while the singletons of this factory are indestruction

    spring启动错误Singleton bean creation not al

    本文主要介绍了spring启动错误Singleton bean creation not allowed while the singletons of this factory are indestruction,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java版十大排序经典算法:完整代码(2)

    java版十大排序经典算法:完整代码(2)

    优秀的文章也不少,但是Java完整版的好像不多,我把所有的写一遍巩固下,同时也真诚的希望阅读到这篇文章的小伙伴们可以自己去从头敲一遍,不要粘贴复制!希望我的文章对你有所帮助,每天进步一点点
    2021-07-07
  • 详解Java的Spring框架中bean的注入集合

    详解Java的Spring框架中bean的注入集合

    这篇文章主要介绍了详解Java的Spring框架中bean的注入集合,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • 关于Spring启动时Context加载源码分析

    关于Spring启动时Context加载源码分析

    这篇文章通过源码分析主要给大家介绍了关于Spring启动时Context加载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01

最新评论