泛型

本文介绍了泛型,它是未知数据类型,可看作接收数据类型的变量,创建对象时确定其数据类型。泛型能避免类型转换异常,将运行期异常提升到编译期。还阐述了泛型的使用,包括定义泛型类、含泛型的方法和接口,以及泛型通配符的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、泛型介绍

泛型是一种未知的数据类型,不确定数据类型的时候使用泛型。
泛型也可以看做一个变量,用来接收数据类型;
创建对象时确定泛型的数据类型
举例:
ArrayList在定义的时候,不知道会存储什么类型的数据,所以类型使用泛型;
创建集合对象的时候,就会确定泛型的数据类型,数据类型作为参数传递。
创建集合时不使用泛型
可能抛出类型转换异常
泛型的作用

  • 避免类型转换异常
  • 把运行期异常提升到编译期

编译期异常是Exception throw ;编译器异常程序必须处理:通过throws 或者 try catch
运行期异常 RuntimeException 运行期异常程序不是必须处理

2、泛型的使用

2.1 定义泛型的类:

泛型可以接受任意数据类型
泛型在创建对象的时候确定

/*
泛型是一种未知的数据类型,不确定数据类型的时候使用泛型。
泛型也可以看做一个变量,用来接收数据类型;
创建对象时确定泛型的数据类型 
 */
public class GenericClassTest {
	public static void main(String[] args) {
		// 创建对象时确定数据类型
		GenericClass<Integer> genericClass = new GenericClass<>();		
	}
}
class GenericClass<E> {
	private E name;
	public E getName() {
		return name;
	}
	public void setName(E name) {
		this.name = name;
	}
}
2.2 含有泛型的方法:

在调用方法时确定泛型的数据类型
public void get(M m);
public static void get(M m); 静态方法不建议创建对象使用

/* 定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间
 * 格式:
 * 修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型))
 * 含有泛型的方法,在调用方法时确定泛型的数据类型
 * 传递参数时确定泛型的类型
 */
public class GenericMethod {
	public static void main(String[] args) {
		GenericMethod genericMethod = new GenericMethod();
		genericMethod.method("343434");
		genericMethod.method(56.78);
	}
	public <R> void method (R r) {
		System.out.println(r);
	}
}
2.3 含有泛型的接口:<>

1、接口的实现类指定泛型类型
接口方法可以使用泛型类型 :迭代器

/*泛型接口*/
public interface GenericInterface<E> {
	public abstract void method(E e);
}

// 实现接口要重写所有方法
class GenericInterfaceImpl implements GenericInterface<String>{
	@Override
	public void method(String e) {
		System.out.println(e);
	}
}

2、接口指定泛型类型,实现类不指定
创建实现类对象时指定泛型类型 :ArrayList

/*泛型接口*/
public interface GenericInterface<E> {
	public abstract void method(E e);
}

// 实现接口要重写所有方法
class GenericInterfaceImpl<E> implements GenericInterface<E>{

	@Override
	public void method(E e) {
		System.out.println(e);
	}
}
2.4 泛型通配符

1、?表示任意数据类型
定义时不可用,参数可用
2、泛型的上限和下限
上限 ?extends E E的子类
下限 ?super E E的父类
注意,参数可以用通配符,定义变量不可用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值