泛型的简单了解

从时序参数到电压供给:TTL(RGB)液晶屏驱动调试全解析 本文全面解析TTL(RGB)液晶屏驱动调试的关键技术,从时序参数配置到电压供给系统搭建,详细介绍了同步信号参数、寄存器配置技巧以及升压电路设计。通过实战案例和常见故障分析,帮助工程师快速掌握液晶显示屏调试方法,提升开发效率。 阅读详情

定义

Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

注:参数化类型。数据类型不同,数据类型的位置是变量,随着变量值的不同,数据类型也不同。

泛型的优点

  • 提高了代码的复用性
  • 将运行期的类型转换异常,转变成编译期的检测,减少了异常的发生
  • 避免了向下转型。

泛型的格式

<标识符>
标识符 一般都是使用一个大写英文字母,这个字母一般使用E K V T 来进行表示 ,其中 E element 元素, K Key 键, V value 值,T type 类 ,但是这些字母只是表示字母含义,没有实际意义。只是大家一般这么使用

泛型的分类

泛型类

  • 声明格式

class 类名<泛型,泛型,泛型>{
     语句体;
}

  • 代码实现
class A<T,M>{//多个泛型之间使用,隔开
	public void fun(T a,M b) {
		
	}
}

泛型接口

  • 声明格式

interface A{
    语句体;
}

  • 泛型接口的两种实现形式
    • 泛型具体,子类可以不带泛型
interface A<T>{
	public abstract void fun();
}

class AImpl implements A<String>{

	@Override
	public void fun() {
				
	}	
}
  • 泛型不具体,子类也需要带泛型
	interface A<T>{	//接口中定义泛型
		public abstract void fun();
	}
	
	class AImpl<T> implements A<T>{ //当子类需要的类型也不确定的时候,作为实现子类也需要带泛型		
		@Override
		public void fun() {		
		}	
	}

泛型方法

  • 声明格式

权限修饰符 修饰符<泛型>返回值类型 方法名称(参数){
  
        }

  • 代码实现
class A<M>{
	//T 表示的泛型仅在该方法中使用,该类的其它方法不使用。
	public <T>void fun(T a,M b) {
		
	}
	//静态方法 只能使用泛型方法,不能使用类或接口上的泛型。
	public  static <K>void fun2(K a) {
		
	}
}

注:类或者接口的泛型只能用在非静态方法中,不能用于静态方法,对于静态方法,只能使用泛型方法的形式。

泛型的特点

  • 菱形技术(类型推断)
     1.7jdk开始的 ,可以通过类型推断 推断出后面的类型。
    举例:ArrayList<String> list=new Arraylist<>()
  • 可擦除技术
     在.class文件中没有泛型的存在,已经编译成为普通代码块
  • 泛型在创建的时候才会具体。

泛型中通配符的使用详解

  • 通配符的使用

当数据类型不知道写哪个的时候,可以使用泛型的统配符 ?

import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		//给ArrayList集合中添加不同的种类数据类型的数据
		ArrayList<Student> alist = new ArrayList<>();
		ArrayList<Teacher> alist2 = new ArrayList<>();
		A a = new A();
		//将ArrayList集合对象传到方法中
		a.fun(alist);
		a.fun(alist2);	
	}
}
class A{
	//创建方法的时候,给fun()方法传递参数时,不知道在ArrayList集合中放什么类型的数据,这里可以使用通配符
	//但是经过测试,不加泛型也是没有问题的,但是会有警告
	public void fun(ArrayList<?> arr) {
		
	}
}
class Student{}
class Teacher{}
  • 泛型的上限限定: 该T适配于这个类和它的子类

格式 : <? extends T >

public class Test {
	public static void main(String[] args) {
		//这里可以放LittleDog,Dog
		ArrayList<LittleDog> list = new ArrayList<>();
		fun(list);
	}
	public static void  fun(ArrayList<? extends Dog>  list) {
		
	}
}
//类的关系
class  Animal{
	
}
class Dog extends Animal{
	
}
class LittleDog extends Dog{
	
}
  • 泛型的下限限定:该T适配于这个类和它的父类

格式 :<? super T>

public class Test {
	public static void main(String[] args) {
		//这里可以放Animal和Dog,否则会报错
		ArrayList<Animal> list = new ArrayList<>();
		fun(list);
	}
	public static void  fun(ArrayList<? super Dog>  list) {
		
	}
}
//类的关系
class  Animal{
	
}
class Dog extends Animal{
	
}
class LittleDog extends Dog{
	
}
AndroidKiller之APK 编译失败,无法继续下一步签名【BUG解决】【App反向解析】 文章目录项目场景:问题描述原因分析:解决方案:BUG解决 项目场景: AndroidKiller: 在反向解析APP包时报错:APK 编译失败,无法继续下一步签名。 网上很多方法都是无效的哈,我追究原因发现,这个bug的出现大部分情况都是因为Apktool的问题。 此方法:百分之百解决此bug! 错误如下: 问题描述 APK 编译失败,无法继续下一步签名! 原因分析: Apktool版本不适配的问题,现在的技术更新换代太快,我们安装AndroidKiller的时候,有时候不是官方渠道的话,他的版本是非常 阅读详情

相关推荐

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

简单了解泛型

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。 ----- 来源《Java编程思想》对泛型的介绍。 泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。

weixin_74235506的博客 1068

Windows环境下pcl点云库 安装配置全流程(精简、有效)

本文为Windows配置点云库pcl步骤,具体是win10、visual studio 2017、pcl1.11.1。

zaibeijixing的专栏 1万+

简单了解一下 TypeScript 的泛型

本文简单认识一下 TypeScript 中的泛型,虽然不是最全面的,但是很容易理解和学习。

weixin_52648900的博客 934

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8753

Cadence SKILL 语言实战指南:从函数列表到高效自动化脚本

本文是Cadence SKILL语言实战指南,旨在帮助芯片设计工程师从掌握核心函数列表出发,高效构建自动化脚本。文章详细解析了数据处理、数据库访问、流程控制及错误处理四类关键函数,并通过版图层批量修改与参数化单元生成两大实战场景,演示如何将函数组合成解决实际问题的自动化方案,从而显著提升Virtuoso环境下的工作效率。

beta5的博客 705

简单了解java中的泛型

简单了解java泛型的使用

weixin_63323754的博客 1233

网规第三版:第4章网络资源设备(完结)

第 4 章 网络资源设备 调整内容: 更新主流网络设备(交换机、路由器、防火墙)的技术参数与选型标准 增加国产化网络设备与信创产品的相关内容 精简已淘汰的设备类型与技术指标

鹿鸣天涯 267

Java泛型简单了解

泛型@Author:云都小生为什么要使用泛型 Java的泛型提供了一种编译时类型检测机制,允许程序在运行时检测到非法的类型。这句话可能你看不懂,没关系,我引用许多相关文章中都会出现的一个例子。import java.util.*;public class GenericTest { public static void main(String[] args) { List l

云都小生 514

在RStudio中使用GitHub Copilot:代码自动生成,从此告别手敲!

可以通过自定义提示词来引导Copilot生成符合自己需求的代码。再看一个做统计分析的。

Codewar的博客 330

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

泛型的简单了解和学习

第17章 泛型 泛型的概念 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入...

weixin_46587586的博客 195

[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)

摘要: Godot引擎版本选择需根据项目需求权衡3.x与4.x。Godot4.x(如4.2)适合3D开发和新项目,支持Vulkan和GDScript2.0,但生态尚不成熟;Godot3.x(如3.5.3)则更适合稳定2D开发、Web导出及依赖现有插件/教程的场景。安装方式极简,官网下载解压即可运行。新手建议:短期高效选3.x,长期探索选4.x,旧项目勿盲目迁移。附版本对比表及决策树,助开发者快速匹配需求。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 910

关于泛型的简单了解

约束说明示例T 是值类型intdoubleboolT 是引用类型stringPeopleListT 有无参构造intwhere T : 基类T 是某类或其子类T : Animalwhere T : 接口T 实现某接口核心记忆struct→ 值类型(int、double...)class→ 引用类型(string、对象...)new()→ 可以 new(有无参构造)基类约束 → 限制必须是某类的子类接口约束 → 限制必须实现某接口。

2301_80039624的博客 389

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

简单了解一下Java中的泛型

泛型可以用来指定容器,而由编译器来保证类型的正确性。通俗易懂的讲,泛型就是限制数据类型为一种参数。

Yangyeon_的博客 2295

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java泛型的简单了解

泛型 1、什么是泛型 ​ 在泛型之前,可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要明确知道存储每个元素的数据类型,否则很容易引发ClassCastException异常。 ​ 泛型是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时监测到非法的类型数据类型。 ​ 泛型的本质就是参数化类型,也就是所操作的数...

qq_45689209的博客 150

包装类&简单了解泛型

泛型(Generics)是 Java 中一种参数化类型的机制,它允许在定义类、接口和方法时使用类型参数,而不是具体的数据类型。这些类型参数可以在使用时被具体的类型(如String、Integer等)替换,从而实现 “一套代码适配多种数据类型” 的效果。

phltxy的博客 630

简单了解泛型和包装类

简单了解Java的泛型和包装类。

m0_56911284的博客 553

如何获取泛型的类型 以及instanceof的简单了解

一、instanceofa instanceof B:若a是B的一个实例对象,则a instaceof B返回true。所以一直误以为a,必须是由B a=new B()而来。instanceof在进行强转时可以避免错误。/** * 测试instanceof * @author tt * */ public class Main { public static void main(Stri...

NEU_tt的博客 7977

Java进阶-简单了解泛型

Java中的泛型 一、泛型的类型 1.1 泛型类 1.2 泛型接口 1.3 泛型方法 二、限定类型 2.1 类型变量的限定-泛型类 2.2 类型变量的限定-泛型方法 三、泛型的约束和局限性 四、泛型类型的继承规则 五、通配符 六、类型擦除

备忘录 289

简单了解一下泛型

学习了解泛型

cyschuyanshu的博客 107

简单的了解泛型,Collection与Map

泛型的简单应用 集合可以存储任何类型的对象,但当把一个对象存入集合后,集合不会记得的这个对象的类型,也就是说把这个对象从集合中取出来的时候,编译时会把这个对象看为object类型,而若是做强制类型转换的话是非常容易出错的。因此我们引入了泛型。 我们要明白的是在泛型是在程序编译期间的一种机制,而在运行期间是没有这个概念的。 Collection<String> collection = ...

shadow___h的博客 156

集合框架,泛型,包装简单了解

集合 集合: 集合背后是数据结构:组织数据的一种方式 c++中集合被称为STL模板 类和接口 橙色的为接口 蓝色的为抽象类 棕色的为类 关系: 其中接口之间为继承的关系 如:Collection继承 Iterable 抽象类AbstractList 继承/实现List接口 类实现接口 类继承类 (1)接口(interface): Collection:存储单个的数据 List:链表 Queu...

weixin_43909643的博客 131

简单了解泛型<T> T的用法

此处的<T>类似于占位符,告诉编译器我返回的是泛型,而不是T类。只有搭配了<T>之后,后面的T才是泛型,而不是某个T.class。 下面介绍<T> T的两种用法。 1.方法参数带T public class Test { //这里的泛型受入参类型影响,跟入参类型保持一致 public static <E> List<E> getListFromArray(E[] array) { List<E> resu

qq_43527397的博客 1583

Java 泛型类型简单了解

Java--泛型类型简单了解

m0_59076472的博客 184

简单了解枚举和泛型

**Java枚举是一个特殊的类 ,一般表示一组常量 ,使用enum关键字来定义。 创建枚举: enum枚举类名 {枚举常量1,枚举常量2,枚举常量3} 结尾可用逗号,也可不写,也可用分号结束。如果直接用分号就代表结束了。 enum定义的枚举类默认继承了java.lang.Enum类,枚举的4个常用方法: values()该方法可以将枚举类型成员以数组的形式返回, 使用格式:类名点的形式调用即可 valueOf()该方法可以返回枚举常量,你放进()里的参数要真实存在,不然会报异常。 ordinal()该方法

qq_53014458的博客 387

你对泛型了解吗?简单说明一下泛型的有什么好处?

泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。提高程序性能、减少类型安全检查、提高代码质量,减少重复性的编程代码。好处是类型安全和减少装箱、拆箱的性能消耗。

weixin_45253459的博客 178
上一篇: Vector集合使用特有遍历方式
下一篇: java语言实现在控制台编译运行的学生信息管理系统(IO版)
没事多喝水w
博客等级 码龄9年 13粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值