首页 > 编程语言 >Java泛型的总结

Java泛型的总结

时间:2022-09-27 10:33:44浏览次数:37  
标签:总结 arr Java int void 类型 泛型 public

泛型可以用于接口、类、方法上。还有泛型通配符这个概念

泛型的好处:可以在编译时检查

1.用于方法中,指定该方法中的形参的类型。

语法:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
注意:方法上定义了是什么 泛型变量 ,后面就只能用什么 泛型变量

package com.itheima.hw;

import java.util.Arrays;

/**
 * @author Pzi
 * @create 2022-09-27 9:57
 */
public class GenericArray {

    //  泛型方法,交换数组中两个索引位置的值
    public static <T> void swap(T[] arr, int index1, int index2) {
        T temp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = temp;
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        Integer newNums[] = Arrays.stream(arr).boxed().toArray(Integer[]::new);
        swap(newNums, 0,1);
    }

}

2.用于类上

修饰符 class 类名<代表泛型的变量> { }

3.用于接口上

修饰符 interface接口名<代表泛型的变量> { }

  • 如果某个类要实现某个泛型接口,但是该实现类也不确定类型,如下定义
public class MyImpl3<E> implements MyGenericInterface<E> {
    @Override
    public void add(E e) {

    }

    @Override
    public E getE() {
        return null;
    }
}
4.泛型通配符

可以用来指定传入类型的上限和下限
可以用来表示位置的类型,比如说一个方法中形参的类型
如:
public static void getElement(Collection<?> coll){}

类型名称 <? extends 类 > 对象名称
表示只能传入该类或者其子类

类型名称 <? super 类 > 对象名称
表示只能传入该类或其父类

标签:总结,arr,Java,int,void,类型,泛型,public
From: https://www.cnblogs.com/pzistart/p/16733603.html

相关文章

  • Java Stream常用代码
    //过滤数据List<TestVo>list=list.stream().filter(x->NumberUtil.isLessOrEqual(x.getPrice(),testVo.getPrice())).collect(Collectors.toLis......
  • JavaWeb的servlet的doGet,doPost方法
    packagetop.lostyou.servlet;importcom.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;importjavax.servlet.ServletException;importjavax.servlet.ht......
  • java有参的构造方法和无参的构造方法
    转:java有参的构造方法和无参的构造方法如果编写一个java程序时没有添加无参构造方法,那么编译器会自动添加无参构造方法;但是如果编写时添加了有参构造方法而未添加无参构造......
  • 遇到过的错误之“日期计算错误,Java8API导致Unsupported unit: Seconds【时间类错误】"
    一、问题场景:在计算相差天数时爆出的错误 报错内容:java.time.temporal.UnsupportedTemporalTypeException:Unsupportedunit:Seconds 二、原因 我这里使用了L......
  • Avue 常见问题 (工作总结)
    vaildData验证对象验证是否为空的任何类型数据,为空择取默认的设置值varobj={}console.log(this.vaildData(obj,'默认值'))//默认值console.log(this.vaildD......
  • linux配置当前用户java环境
    cd~ls-al  这里可以看到一个 .bash_profile的文件然后vim它vim.bash_profile 插入如下代码 PATH=$PATH:$HOME/binexportJAVA_HOME=/apps/upgrade_sj......
  • JavaScript 数组
    数组是一组数据的集合,其中每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将数据存储在单个变量名下的优雅方式。数组中可存放任意类型:字符串、数字、布尔......
  • Java开发学习(三十六)----SpringBoot三种配置文件解析
    一、配置文件格式我们现在启动服务器默认的端口号是8080,访问路径可以书写为http://localhost:8080/books/1在线上环境我们还是希望将端口号改为80,这样在访问的时候就......
  • On_Java_Advanced_Edition
    01枚举类型1.2在枚举类型中添加自定义方法packageorg.example;publicenumRun_RR{YANG("Thisismosthelpful.."),QIAN("ThisisagoodtestofEnum......
  • java 使用implements接口实现sort
    一、java是单继承,implements可以有多个我们可以以这样子的格式进行集成和尊从接口:classChild extendsParent implementsprotocol1, protocol2{};Child类继承了Pa......