首页 > 编程语言 >Java泛型的定于与使用

Java泛型的定于与使用

时间:2023-12-04 12:24:17浏览次数:35  
标签:定于 Java 方法 类型 泛型 声明 public

Java泛型的定于与使用

泛型也叫泛类型。Java中可以声明泛型的地方。
泛型的分类:

  • 泛型类:在类的定义时,声明泛型
  • 泛型接口:在接口的定义时,声明泛型
  • 泛型方法:在类的方法上声明泛型

一、泛型类

1、语法

class Name <T1, T2, ... , Tn>  {
    //
}
/*
 * T 代表一个 Java类,在类上声明的泛型。
*/

2、举例

/* 类的定义 */
public class Foo <T> {
    
    // 用法1:泛化成员变量。
    // 即:变量的类型由外部指定
    private T info;
    
    
    // 用法2:构造方法的类型
    public Foo (T info) {
        this.info = info;
    }
    
    // 用法3:方法的返回类型
    public T getInfo(){
        return info;
    }
    
}
/* 类的使用 */
Foo foo = new Foo <String> ("hello");

二、泛型接口

泛型接口的声明与泛型类一致。

1、语法

public interface Name <T> {
    T getInfo();
}

2、实现

泛型接口有2种实现:

  • 实现类明确声明类型
  • 实现类不明确声明类型

3、举例

前提条件,接口声明如下:

public interface Context <T> {
    T getContext();
}

3.1 实现类1:(泛型类型明确)

// 实现类的泛型类型明确为:String
public class TomcatContext implements Context<String> {
    
    @override
    public String getContext() {
        return "Tomcat"
    }
}

3.2 实现类2:(泛型类型不明确)

// 从左向右数:第一个 T 表示:需要将泛型在类上声明,后面才能使用。
public class SpringContext <T> implements Context<T> {
    
    @override
    public T getContext() {
        return null;
    }
}

三、泛型方法

泛型方法是在调用方法时指明泛型的具体类型。

对比:

  • 泛型类是在类实例化时指明泛型的具体类型。

1、分类

  1. 普通方法
  2. 静态方法
  3. 抽象方法
  4. final 修饰的方法
  5. 构造方法

2、语法

public <T> T foo (T obj){
    
}

/**
说明:
1、尖括号内为类型参数声明列表。位于返回值或void之前。
2、尖括号内声明的T,可以用在方法的任何地方或位置。
   如:
   - 参数、
   - 方法体内部
   - 返回值。
*/

注意:
泛型方法和泛型类中的方法加以区分:
1、如果泛型类上已经声明了泛型,则在使用泛型类中的方法时,
   不需要声明泛型,可以直接使用泛型(作为入参或返回值)。
2、如果类上没声明泛型,则泛型方法需要自己加一个 <T> ,
   对泛型进行声明:这就是泛型方法。

标签:定于,Java,方法,类型,泛型,声明,public
From: https://www.cnblogs.com/eddyz/p/17874638.html

相关文章

  • java 捕获异常Exception 获取异常信息的方法 e.toString() e.getMessage() e.printSta
    Java异常中e.getMessage()和e.toString()e.printStackTrace()的区别e.getMessage():打印异常的原因e.toString():打印异常类型和异常的原因e.printStackTrace():打印完整的异常堆栈信息  总结e.getMessage()和e.toString()方法:打印的异常信息太少,没有具体......
  • JavaWeb实现文件上传和下载
    环境配置:导入依赖jar包。commons-fileupload-1.4.jarcommons-io-2.6.jar上传表单的enctype属性enctype属性规定在发送到服务器之前应该如何对表单数据进行编码。语法<formenctype="value">1属性值值 描述application/x-www-form-urlencoded 在发送前编码所有字符(默认)multipart/......
  • 1.Java集合(List、Set、Queue)
    1.集合概述Java集合也被称为容器。主要由两个接口组成,一个是Collection接口,主要存放单一元素;一个是Map接口,主要存放键值对。Collection下面还有三个子接口,分别是List、Set、Queue。Java框架如下图所示:1.1List、Set、Queue、Map简介List(对付顺序的好帮手):存储的元素有序、......
  • java对象中属性太多,需要对一些属性的值做计算操作
    问题描述:在java中,如果一个对象属性太多,我们需要对一个对象中的全部属性进行取相反值解决方法:在类中定义一个函数如下:我这边对象的属性类型都是BigDecimal类型的publicvoidsetNegateValue()throwsIllegalAccessException{Field[]declaredFields=this.getClass......
  • Java 控制语句:分支与循环
    第一章:分支结构1.1条件语句1、if语句2、switchcase语句switch(expression){casevalue://语句break;//可选casevalue://语句break;//可选//你可以有任意数量的case语句default://可选//语句}如果c......
  • java基础-变量、常量、作用域
    变量变量:指可以变化的量Java是一种强类型预言,每个变量都必须声明其类型Java变量是程序中最基本的储蓄单元,其要素包括变量名,变量类型和作用域。typevarName[=value][{,varName[=value]}];//数据类型变量名=值;可以使用都好隔开来声明多个同类型变量注意事项1.每个......
  • LeetCode-Java:121. 买卖股票的最佳时机
    题目给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,......
  • LeetCode-Java:122. 买卖股票的最佳时机Ⅱ
    题目给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。示例1:输入:prices=[7,1,5,3,6,4]输出:7解释......
  • Java基础-数据类型
    目录注释写代码时,书写注释是一个非常好的习惯。平时写代码一定要注意规范选中代码,shift+ctrl+/搞定。标识符java所有的组成部分都需要名字,类名,变量名以及方法名被称为标识符。所有的标识符都是以字母,美元符,或者下划线开始的。数据类型1.强类型语言:要求变量的使用要严......
  • 后端 Java 对象转 json(不用第三方依赖的拼接方式)
    需求:编写工具类要尽可能不用任意一个jar包依赖,或者尽可能精简原有数据:ArpsParams{actualProduction=[{mouth=2022-07,oilProdDaily=366088.33},{mouth=2022-08,oilProdDaily=380806.78}],predictionSegment=[{mouth=2022-07,oilProdDaily=367832.31},{mouth=2022-0......