java泛型知识总结篇(代码片段)

textworld textworld     2023-05-01     726

关键词:

泛型与内部类

  • 非静态内部类会自动继承外围类泛型参数,对于非静态内部类,无需再次声明泛型参数
  • 静态内部类不会自动继承外围类泛型参数(事实上,Node中的泛型参数与MyLinkedList中的没有任何联系,只是这里使用相同的符号T而已)
  • 泛型类声明的泛型参数占主导地位,如泛型类声明的参数为,则泛型接口的泛型参数也应为
  • 当泛型类声明的参数为时,泛型接口的参数可以不写;
/**
 * 泛型类声明的泛型参数占主导地位,如泛型类声明的参数为<T>,则泛型接口的泛型参数也应为<T>;
 * 当泛型类声明的参数为<T>时,泛型接口的参数<T>可以不写;
 * @param <T>
 */
public class LinkedList<T> implements Iterable 

    @Override
    public Iterator iterator() 
        return null;
    

    @Override
    public void forEach(Consumer action) 

    

    @Override
    public Spliterator spliterator() 
        return null;
    

泛型方法

public class GenericMethods
    public <T> void f(T x) 
        System.out.println(x.getClass().getName());
    

泛型擦除

  • 在泛型代码内部,无法获得任何与关泛型参数类型的信息
    List 和 List 在运行时事实上是相同的类型,都是List

  • 泛型类型参数将擦除到它的第一个边界

  • 之所以使用擦除来实现泛型,是为了迁移兼容性

泛型边界

  • extends对泛型上限进行了限制即T必须是Comparable<? super T>的子类,然后<? super T>表示Comparable<>中的类型下限为T!

创建泛型类型的对象或者数据

  • new T()在java中无法实现,可以通过传递一个工厂对象,来创建新的实例,或者自己显示工厂
class ClassAsFactory<T>
       T x;
       public ClassAsFactory(Class<T> kind)
            try 
                x = kind.newInstance();
             catch (Exception e) 
                throw new RuntimeException(e);
            
        
  • 泛型数组创建,也不都能用Object[]强转,因为类型擦除到第一个边界,边界不一定是object
public class ZwbHeap<T extends Comparable<? super T>> 
    private T[] nodes;
    private int size;
    private int capacity = 16;

    public ZwbHeap() 
        // 这样转换会失败
        //nodes = (T[])new Object[capacity+1];
        // 必须这样写
        nodes = (T[])new Comparable[capacity+1];
    

java基础知识回顾之七-----总结篇(代码片段)

前言在之前Java基础知识回顾中,我们回顾了基础数据类型、修饰符和String、三大特性、集合、多线程和IO。本篇文章则对之前学过的知识进行总结。除了简单的复习之外,还会增加一些相应的理解。基础数据类型基本数据类型主... 查看详情

java知识点总结篇(代码片段)

数组一维数组声明数据类型[]数组名;数据类型数组名[];分配空间数组名=new数据类型[数组长度];可以在声明的同时分配空间,分配空间之后数组中才能放数据,数组元素都是通过下标来访问,声明数组的同时赋值时不能指定... 查看详情

java核心知识点总结篇-jvm篇(代码片段)

2.JVM(1)基本概念:JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。(2)运行过程:... 查看详情

java知识点总结篇(代码片段)

抽象类使用规则abstract定义抽象类;abstract定义抽象方法,只有声明,不需要实现;包含抽象方法的类是抽象类;抽象类中可以包含普通方法,也可以没有抽象方法;抽象类不能直接创建,可以定义引用变量;接口定义:一种特... 查看详情

java总结篇系列:java多线程(代码片段)

...1a;Java多线程(一)多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了J... 查看详情

java总结篇系列:java多线程(代码片段)

多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上... 查看详情

java基础知识点笔记总结(代码片段)

文章目录1.泛型定义2.泛型的小细节3.泛型自定义泛型4.泛型自定义泛型注意点5.泛型方法6.泛型继承注意点7.泛型通配符?8.泛型有限制条件的通配符?9.File类9.1File类的使用9.2file类的常用方法9.3file类总结10.IO流11.IO流体系对... 查看详情

java面试知识点总结-javase基础篇(持续更新)(代码片段)

目录一、Java面向对象1.面向对象的特性及理解2.访问修饰符都有哪些,它们的区别有哪些3.为什么使用clone4.浅拷贝和深拷贝 二、JavaSE语法1.&和&&的区别 ,那|和|| 2.两个对象的hashcode值相同,那equals是否一定... 查看详情

201771010135杨蓉庆《面对对象程序设计(java)》第十周学习总结(代码片段)

1、实验目的与要求(1) 理解泛型概念;(2) 掌握泛型类的定义与使用;(3) 掌握泛型方法的声明与使用;(4) 掌握泛型接口的定义与实现;(5)了解泛型程序设计,理解其用途。一、理论知识泛型类的定义:(1)泛型:... 查看详情

java基础总结三(泛型异常)(代码片段)

文章目录Java基础总结三(泛型、异常)泛型泛型的创建泛型类泛型接口泛型方法类型擦除泛型的协变与逆变异常异常体系异常处理Java基础总结三(泛型、异常)泛型泛型的创建泛型类我们最常用泛型的地方就是... 查看详情

杨玲201771010133《面向对象程序设计(java)》第十周学习总结(代码片段)

...结第一部分:理论知识学习部分  第八章  泛型程序设计一、泛型程序设计的定义1、JDK5.0中增加的泛型类型,是Java语言中类型安全的一次重要改进。2、泛型:也称参数化类型(parameterizedtype),就是在定义类、接口... 查看详情

java万字长文基础知识总结(下)-王者笔记《收藏版》(代码片段)

上一篇Java基础知识学习总结之(上)   下一篇Java集合容器篇面试题 (上)                                          目录三、计算机原理和操作系统 内存、CPU、硬盘? Linux基本命令... 查看详情

狄慧201771010104《面向对象程序设计(java)》第十周学习总结(代码片段)

实验十 泛型程序设计技术实验时间2018-11-1第一部分:理论知识学习部分(一)、泛型程序设计的定义1、JDK5.0中增加的泛型类型,是Java语言中类型安全的一次重要改进。2、泛型:也称参数化类型(parameterizedtype),就是在定义类、... 查看详情

201771010128王玉兰《面向对象程序设计(java)》第十周学习总结(代码片段)

第一部分:理论知识部分总结:(1)定义简单泛型类:A:泛型:也称参数化类型(parameterizedtype),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。B:泛型程序设计(Genericprogramming):编写代码可以被很多不... 查看详情

js基础知识总结篇(代码片段)

javascript在学习过程中的重点易忘的部分的总结~基本类型                     注意: JavaScript不区分整数值和浮点数值,所有数字在JavaScript中均用浮点数值表示。    0.1+ ... 查看详情

java泛型总结(代码片段)

一:什么是泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的... 查看详情

java泛型相关总结(上)(代码片段)

最近在看《Java核心技术》泛型相关的部分,总结下。泛型程序设计是什么?泛型编程(genericprogramming)是计算机编程中的一种风格,类型通过参数指定。意味着编写的代码可以被不同类型的对象所使用。类型参数(typeparameters)... 查看详情

前端知识总结系列第03篇(代码片段)

一、写在前面本期系列是JavaScript的一些知识点总结,这是笔者对自己多年以来学习和使用的一些技术的巩固与复习。已经很久没有这样从头到尾的学习过了,这系列文章也是作为一个复习的过程的一些记录,若作者... 查看详情