深入了解Java核心类库--泛型类

目录
  • 1.1 泛型的使用
    • 1.1.1 泛型类
    • 1.1.2 泛型接口
    • 1.1.3 泛型方法
    • 1.1.4 tips
  • 1.2 泛型限制类型
  • 1.3 通配符?
    • 1.3.1 上界限定
    • 1.3.2 下届限定
    • 1.3.3 无限制
  • 1.4 泛型的作用
  • 总结

1.1 泛型的使用

泛型:参数化模型(不确定,后续使用时指定类型)

1.1.1 泛型类

1.1.2 泛型接口

  • 实现接口时,可以选择或不选择指定泛型类型
public interface IntercaceName<T>{
	T getData();
}

①指定类型

public class Interface1 implements IntercaceName<String> {
	private String text;
	@Override
	public String getData() {
		return text;
	}
}

②不指定类型

public class Interface1<T> implements IntercaceName<T> {
	private T data;
	@Override
	public T getData() {
		return data;
	}
}

1.1.3 泛型方法

private static T 方法名(T a, T b) { }

方法仅在方法内部有效

1.1.4 tips

  • 编译之后程序会采取去泛型化措施(泛型只在编译阶段有效)
  • 运行时对传入的对象进行相应类型的生成,即对象进入和离开方法的边界处添加类型检查和类型转换的方法(泛型不进入运行阶段)

1.2 泛型限制类型

  • 在使用泛型时, 可以指定泛型的限定区域
  • 必须是某某类的子类或 某某接口的实现类,格式:

<T extends 类或接口1 & 接口2>

1.3 通配符?

1.3.1 上界限定

  • 指了泛型类型的上届(限定了父类)

< ? extends Parent>

1.3.2 下届限定

  • 指定了泛型类型的下届(限定了子类)

<? super Child>

1.3.3 无限制

  • 指定了没有限制的泛型类型
  • 区别于Object

1.4 泛型的作用

  • 提高代码的复用率
  • 类型在使用时绑定,无序强制类型转换

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java泛型类型通配符和C#对比分析

    c#的泛型没有类型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM并不支持泛型,只是语法糖,在编译器编译的时候都转换成object类型 类型通配符在java中表示的是泛型类型的父类 public void test(List<Object> c) { for(int i = 0;i < c.size();i++) { System.out.println(c.get(i)); } } //创建一个List<String>对象 List<String&g

  • 自定义的Troop<T>泛型类( c++, java和c#)的实现代码

    Troop<T>是一个泛型列表操作类,适用于非高性能和非大数据量的要求.包括了:取值get,赋值set,追加append,插入insert,清除remove,进队enqueue,出队dequeue,交换swap,滚动roll,进栈push,出栈pop等日常操作. //for more information, please access http://www.one-lab.net using System; using System.Collections.Generic; using Sy

  • Java泛型类与泛型方法的定义详解

    本文实例讲述了Java泛型类与泛型方法的定义.分享给大家供大家参考,具体如下: Java泛型类的定义 一 点睛 泛型类定义的语法如下: [访问修饰符] class 类名称 <T> 泛型类的主要作用在于类被实例化后,传入具体的类型参数,对类的成员属性的类型和成员方法的参数类型和返回值类型进行替换. 二 代码 public class Base<T> { T m; Base(T t) { m = t; } public T getM(){ return m; } public void

  • java泛型类的定义与使用详解

    本文为大家分享了java泛型类的定义与使用的具体代码,供大家参考,具体内容如下 当类中要操作的引用数据类型不确定时,可以定义泛型类完成扩展.下面是程序演示. package packB; class Student { //定义学生类 public String st = "student"; } class Worker { //定义工人类 public String wo = "worker"; } //定义泛型类 class Operate<type&g

  • 浅谈java中定义泛型类和定义泛型方法的写法

    1.方法中的泛型 public static <T> T backSerializable(Class<T> clazz , String path ,String fileName){ FileInputStream fis = null; ObjectInputStream ois = null; Object obj = null; try { fis = new FileInputStream(path + fileName); ois = new ObjectInputS

  • 深入了解Java核心类库--泛型类

    目录 1.1 泛型的使用 1.1.1 泛型类 1.1.2 泛型接口 1.1.3 泛型方法 1.1.4 tips 1.2 泛型限制类型 1.3 通配符? 1.3.1 上界限定 1.3.2 下届限定 1.3.3 无限制 1.4 泛型的作用 总结 1.1 泛型的使用 泛型:参数化模型(不确定,后续使用时指定类型) 1.1.1 泛型类 1.1.2 泛型接口 实现接口时,可以选择或不选择指定泛型类型 public interface IntercaceName<T>{ T getData(); } ①指

  • 深入了解Java核心类库--Math类

    目录 Java常用类库Math 一.Field Summary 二.Method Summary 2.1 常用方法 2.1.1 部分方法源码 2.2 算数运算 2.3 三角函数 2.4 其他不常用方法 总结 Java常用类库Math 类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数 一.Field Summary Modifier and Type Field Description static double E 自然对数的基数 static double PI

  • 深入了解Java核心类库--Arrays类

    目录 Java常用类库Arrays 一.常用方法 1.1 toString 1.2 Sort 1.2.1 sort​(T[] a, int fromIndex, int toIndex) 1.2.2 Sort(T[] a) 1.2.3 其它 1.3 copyOf 1.4 mismatch 1.5 binarySearch 1.5.1 binarySearch​(T[] a, int fromIndex, int toIndex, T key) 1.5.2 binarySearch​(T[] a,

  • 深入了解Java核心类库--Objects类

    目录 1 Objects 1.1 Objects方法 1.2 Objects常用方法 1.2.1 equals(Object a, Object b) 1.2.2 isNull(Object obj) 1.2.3 nonNull(Object obj) 1.2.4 requireNonNull(T obj) 1.3 Objects源码 2 区别于Object 2.1 Object构造方法 2.2 Object其他方法 2.2.1 equals(Object obj) 2.2.2 toString

  • 深入了解Java核心类库--BigDecimal和System类

    目录 BigDecimal 类 一. 概述 常用字段 常用构造方法 常用方法 System类 三个成员变量 arraycopy​(Object src, int srcPos, Object dest, int destPos, int length) 总结 BigDecimal 类 一. 概述 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算. 开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作. BigDec

  • 深入了解Java核心类库--String类

    目录 一. 简介 零碎知识点 字符串常量池 堆在逻辑上的划分 二. 创建对象 2.1.1 直接引用常量区 2.1.2 使用构造方法 2.1.3 两种实例化方法的区别 三.常用方法 总结 一. 简介 零碎知识点 extends Object implements serializable,Comparable< String >,charSequence String类表示字符串,所有字符串文字都是此类的对象 字符串是不变的,值在创建后无法更改 对象一旦声明则不可改变,改变的只是地址,原来的字符

  • 深入了解Java核心类库--Date,Calendar,DateFormat类

    目录 一.Date 1.1 构造方法 1.1.1 Date() 1.1.2 Date(long date) 1.2 常用方法 1.3 其他方法 二.Calendar(抽象) 2.1 获取时间 get() 2.2 设置时间 2.3 时间计算 2.4 其它方法 三.DateFormat(抽象) 3.1 构造方法 总结 一.Date Date类表示特定的时刻,精度为毫秒 Date的两个附加功能:Calendar.DateFormat Calendar类应该用于在日期和时间字段之间进行转换 DateFo

  • Java 图表类库详解

    摘要 在使用java做后台站点的开发张,图表和报表功能都是不可或缺 的.本文推荐了8款最精彩实用的Java图表应用,大部分图表应用的功能都类似,主要在于界面的美观性和使用的灵活性上有一点高低. 正文 1.JFreeChart - 多功能Java图表类库 JFreeChart是一款基于Java的多功能图表类库,并且是完全开源免费的.JFreeChart可以绘制饼状图.柱状图.散点图.时序图. 甘特图等等多种图表,生成的图表还能以PNG和JPEG格式的图片输出,功能十分强大,更重要的一点是JFree

  • Java核心库实现AOP过程

    这篇文章是关于Java的一个疑难杂症,通过利用Java核心库实现简单的AOP方法,并把实例代码做了分析对照,以下是全部内容: Spring是一个十分火热开源框架,而AOP(面向切面编程)则是Spring最重要的概念之一,为了更好的理解和学习AOP的思想,使用核心库来实现一次不失为一个好方法. 首先介绍一下AOP的概念,AOP(Aspect Oriented Programming),即面向切面编程,所谓的面向切面编程,就是从一个横切面的角度去设计代码的思想,传统的OOP思想是用封装继承和多态构造

随机推荐