首页 > 编程语言 >无涯教程-Java泛型 - 绑定类型清除

无涯教程-Java泛型 - 绑定类型清除

时间:2023-12-28 15:31:40浏览次数:34  
标签:Box Java integerBox 无涯 add doubleBox 泛型 new public

如果使用有界的类型参数,Java编译器会用其界线替换通用类型的类型参数。

package com.learnfk;

public class GenericsTester {
   public static void main(String[] args) {
      Box<Integer> integerBox=new Box<Integer>();
      Box<Double> doubleBox=new Box<Double>();

      integerBox.add(new Integer(10));
      doubleBox.add(new Double(10.0));

      System.out.printf("Integer Value :%d\n", integerBox.get());
      System.out.printf("Double Value :%s\n", doubleBox.get());
   }
}

class Box<T extends Number> {
   private T t;

   public void add(T t) {
      this.t=t;
   }

   public T get() {
      return t;
   }   
}

在这种情况下,java编译器将用Number类替换T,并且在类型擦除之后,编译器将为以下代码生成字节码。

package com.learnfk;

public class GenericsTester {
   public static void main(String[] args) {
      Box integerBox=new Box();
      Box doubleBox=new Box();

      integerBox.add(new Integer(10));
      doubleBox.add(new Double(10.0));

      System.out.printf("Integer Value :%d\n", integerBox.get());
      System.out.printf("Double Value :%s\n", doubleBox.get());
   }
}

class Box {
   private Number t;

   public void add(Number t) {
      this.t=t;
   }

   public Number get() {
      return t;
   }   
}

在两种情况下,输出都是相同的-

Integer Value :10
Double Value :10.0

参考链接

https://www.learnfk.com/java-generics/java-generics-bound-typeerasure.html

标签:Box,Java,integerBox,无涯,add,doubleBox,泛型,new,public
From: https://blog.51cto.com/u_14033984/9015640

相关文章

  • java-类
    在Java中,类是面向对象编程的基本概念之一。类是用来描述对象的属性(状态)和行为(方法)的模板或者蓝图。当我们创建一个类时,实际上是定义了一个新的数据类型,可以根据这个类来创建相应的对象。下面是一个简单的类的示例:javaCopyCodepublicclassPerson{//定义类的属性S......
  • java-继承
    在面向对象编程中,继承是一种重要的特性,它允许我们创建一个新的类(称为子类),从已有的类(称为父类或超类)继承属性和方法。通过继承,子类可以获得父类的特性,并且可以在此基础上添加新的特性或修改已有的特性。下面是一个简单的继承的示例:javaCopyCode//定义父类classAnimal{......
  • 二十,JAVA File
    相对路径:IO流默认目录:当前项目工程开始自己算绝对路径:带盘符的路径:网络路径:https://img2.baidu.com/it/u=3164322677&fm=253&fmt=auto&app=120File:文件(带后缀的)和目录(文件夹)//静态字段:System.out.println("File.pathSeparator="+File.p......
  • java智能导诊系统源码,可应用于微信线上挂号、互联网医院、区域平台等场景
    java智能导诊系统源码,可扩展至H5、小程序、app等多端一、系统概述:人体智能导诊系统:是基于医疗AI、自然语言处理技术,推出的在线导医分诊智能工具,在医疗中使用的引导患者自助就诊挂号。在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过人体智能导诊系统,点击对应的人体部位,......
  • 【SpringBoot零基础入门到项目实战②】安装Java和Maven,创建你的第一个项目
    文章目录导言安装JavaWindows系统macOS系统Linux系统安装和配置MavenWindows系统macOS系统Linux系统配置Maven本地仓库使用阿里镜像加速创建第一个SpringBoot项目拓展学习(提前了解后面会讲到)1.深入理解SpringBoot的项目结构2.学习SpringBoot的自动配置3.掌握SpringBoot......
  • Java 系统学习 | Springboot 写 hello world
    经过一段时间基础学习,现在开始使用Springboot框架完成项目,特地记录一下,方便后续查漏补缺。本篇使用Springboot3框架,IDEA2022编辑器,java17版本。新建项目file->new->project弹框中填入自己的信息Name项目名称Location项目存放路径LanguageJavaB......
  • java模块化
    一、模块化概述 二、模块的使用 三、模块服务的使用     ......
  • 【Java】过滤器和拦截器的位置
    过滤器(Fliter)和拦截器(Intercetor)区别 过滤器(Fliter)拦截器(Interceptor)总结定义位置Fliter定义在java.servlet包下 接口HandlerInterceptor定义在org.springframework.web.servlet包下 配置位置配置在web.xml中 配置在springmvc.xml中 作用位置Fliter在......
  • HTML学习第七天:JavaScript进阶与事件处理
    在今天的HTML学习中,我进一步深入了JavaScript的学习,特别是事件处理方面。早上,我回顾了昨天学习的JavaScript基础知识,并进行了一些练习,以加深自己的理解。然后,我开始学习事件处理。事件处理是JavaScript中非常重要的一部分,它允许我们响应用户的各种操作,如点击、滑动、键盘输入等。我......
  • 无涯教程-Java泛型 - 无界通配符
    问号(?)代表通配符,代表泛型中的未知类型。有时可以使用对象类中提供的功能来实现方法,或者代码独立于type参数时,可以使用任何对象。下面的示例说明如何使用扩展来指定无界通配符。packagecom.learnfk;importjava.util.Arrays;importjava.util.List;publicclassGeneric......