Java泛型基本用法

什么是Java泛型 (Java Generics)

首先我们来看看如下代码:

List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");

通过在类型 List 旁边定义 <String>,编译器便可以知道集合 List 里的对象都应该是 String。当编译器在编译代码时,便可以帮我们做类型检查。如果我们往 List 里添加非 String 类的对象,编译器便会报错。

如果我们的集合 List 里存放的对象是 Double, Float 或 Integer,我们只需要修改泛型类型的定义。

List<Double> doubleList = new ArrayList<>();
List<Float> floatList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();

由此可以看出,只需要写一次 List 实现类的代码 (ArrayList) ,便可以复用在不同类型的对象上。并且编译器在编译阶段也会为我们进行类型检查

这便是 Java 泛型。

Java泛型类与泛型方法 (Java Generic Class and Method)

通过以下代码,我们可以看到泛型类与泛型方法的例子。

// 泛型类定义
class Container<T> {
	// 泛型定义的类变量
	private T item;
	
	// 泛型方法: 接受泛型参数
	public Container (T item) {
		this.item = item;
	}

	// 泛型方法: 接受泛型参数
	public void setItem (T item) {
		this.item = item;
	}

	// 泛型方法: 返回泛型对象
	public T getItem () {
		return this.item;
	}
}

由以上代码可以看出,我们只不过是将定义类型的地方替换成了泛型变量 T ,便可以使我们的类享受由泛型带来的灵活好处。

Java泛型接口 (Java Generic Interface)

Java泛型接口的用法与Java泛型类很接近,只不过要记得在实现类 (implementing classes) 也要声明泛型类

// 泛型接口
public interface Speak<T> {
    void speak(T speech);
}

// 实现类也需要声明泛型 <T>
public class Person<T> implements Speak<T> {
    public void speak(T speech) {
        System.out.println(speech);
    }
}

public static void main(String[ ] args) {
    Person<String> p = new Person<>();
    p.speak("Hello");
}

将来有机会我会发布另一篇更详细剖析Java泛型的文章。

作者仍在学习中, 如果有什么错误,请各位指出并包含,谢谢!

作者:David Chou(温哥华SFU计算机学生)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值