Java技术教程 – Java中的泛型(Generics)详解与案例

2024-12-06 0 502

Java技术教程 – Java中的泛型(Generics)详解与案例

引言

泛型(Generics)是Java SE 5引入的一项强类型机制,它允许你在编译时期指定类、接口和方法中将要操作的数据类型。使用泛型的好处主要包括类型安全和代码重用。本文将详细介绍Java中泛型的使用及其案例。

泛型类

泛型类是指在类声明中类型参数化的类。例如,创建一个可以存储任意类型对象的盒子类:


public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}
        

在这个例子中,`Box`是一个泛型类,T是一个类型参数,它可以在创建对象时指定。

泛型方法

泛型方法是指在方法声明中类型参数化的方法。例如,一个可以打印任意类型对象的方法:


public class Util {
    public static <T> void print(T value) {
        System.out.println(value);
    }

    public static void main(String[] args) {
        Util.print(100);       // 输出:100
        Util.print("Hello");   // 输出:Hello
    }
}
        

`<T>`声明了这是一个泛型方法,T是一个类型参数。

泛型接口

泛型接口是指在接口声明中类型参数化的接口。例如,定义一个可以存储任意类型对象的容器接口:


public interface Container<T> {
    void add(T item);
    T get(int index);
}
        

然后可以创建一个具体实现类:


public class MyContainer<T> implements Container<T> {
    private List<T> items = new ArrayList<T>();

    @Override
    public void add(T item) {
        items.add(item);
    }

    @Override
    public T get(int index) {
        return items.get(index);
    }
}
        

泛型案例:使用泛型实现一个简单的泛型数组

下面是一个使用泛型实现的简单泛型数组类,它可以存储任意类型的对象:


public class GenericArray<T> {
    private T[] array;
    private int size;

    public GenericArray(int capacity) {
        array = (T[]) new Object[capacity];
        size = 0;
    }

    public void add(T item) {
        if (size == array.length) {
            resize();
        }
        array[size++] = item;
    }

    private void resize() {
        T[] newArray = (T[]) new Object[array.length * 2];
        System.arraycopy(array, 0, newArray, 0, array.length);
        array = newArray;
    }

    public T get(int index) {
        if (index >= size || index < 0) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
        }
        return array[index];
    }

    public int getSize() {
        return size;
    }

    public static void main(String[] args) {
        GenericArray<String> strArray = new GenericArray<>(3);
        strArray.add("Hello");
        strArray.add("World");
        System.out.println(strArray.get(1)); // 输出:World

        GenericArray<Integer> intArray = new GenericArray<>(3);
        intArray.add(100);
        intArray.add(200);
        System.out.println(intArray.get(0)); // 输出:100
    }
}
        

这个案例展示了如何使用泛型来创建一个可以被类型参数化的数组类,使得该类能够存储任意类型的对象。

结论

使用泛型可以带来类型安全和代码重用的好处。本文介绍了泛型类、泛型方法和泛型接口的基本概念和使用方法,并通过一个实现泛型数组的示例展示了泛型在实际开发中的应用。

希望这篇教程对你有所帮助!如果你有任何疑问或建议,请随时在评论区留言。

Java技术教程
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

本站尊重知识产权,如知识产权权利人认为平台内容涉嫌侵犯到您的权益,可通过邮件:8990553@qq.com,我们将及时删除文章
本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除

腾谷资源站 java Java技术教程 – Java中的泛型(Generics)详解与案例 https://www.tenguzhan.com/2475.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务