泛型介绍和使用

泛型是编程中的一个重要概念,它在不同的编程语言里都有应用,像 Java、C# 等。下面以 Java 为例,为你详细介绍泛型。

泛型的定义

泛型,简单来说就是参数化类型。这意味着在定义类、接口或者方法时,把类型当作参数。这样在使用这些类、接口或方法时,就能明确指定具体的类型。

泛型的作用

  • 类型安全:在编译阶段就可以发现类型不匹配的问题,避免运行时出现 ClassCastException 异常。
  • 代码复用:编写的代码可以适用于多种数据类型,提高代码的复用性。
  • 可读性增强:通过泛型可以明确指定使用的数据类型,让代码更易读和理解。

泛型在 Java 中的使用

泛型类

下面是一个简单的泛型类示例:

class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

在这个示例中,Box 类是一个泛型类,T 是类型参数。可以在创建 Box 对象时指定具体的类型:

Box<Integer> integerBox = new Box<>();
integerBox.setItem(10);
Integer item = integerBox.getItem();

泛型接口

泛型接口的定义和使用如下:

interface Generator<T> {
    T generate();
}

class IntegerGenerator implements Generator<Integer> {
    @Override
    public Integer generate() {
        return (int) (Math.random() * 100);
    }
}

在这个示例中,Generator 是一个泛型接口,IntegerGenerator 类实现了该接口,并指定了具体的类型为 Integer

泛型方法

泛型方法可以在普通类或泛型类中定义:

class Util {
    public static <T> boolean compare(T a, T b) {
        return a.equals(b);
    }
}

在这个示例中,compare 是一个泛型方法,<T> 表示这是一个泛型方法,T 是类型参数。可以这样调用泛型方法:

boolean result = Util.compare("hello", "hello");

泛型的通配符

在 Java 中,泛型还支持通配符,主要有以下三种:

  • ? extends T:表示上界通配符,即只能是 T 或者 T 的子类。
  • ? super T:表示下界通配符,即只能是 T 或者 T 的父类。
  • ?:表示无界通配符,即可以是任意类型。

以下是使用上界通配符的示例:

import java.util.ArrayList;
import java.util.List;

class Fruit {}
class Apple extends Fruit {}

public class GenericWildcardExample {
    public static void printFruits(List<? extends Fruit> fruits) {
        for (Fruit fruit : fruits) {
            System.out.println(fruit);
        }
    }

    public static void main(String[] args) {
        List<Apple> apples = new ArrayList<>();
        printFruits(apples);
    }
}

在这个示例中,printFruits 方法接受一个 List,该 List 中的元素类型必须是 Fruit 或者 Fruit 的子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnLg.NJ

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值