Java中泛型的定义和使用

本文介绍了Java泛型的概念、定义及使用方法。泛型提供了一种在编译时检查类型安全并能增强代码复用的方式。通过泛型,我们可以限制集合中存储的数据类型,避免强制类型转换,并提高代码的可读性和准确性。示例展示了如何定义泛型类以及如何在主函数中创建泛型对象,强调了泛型在限制类型和提高效率上的作用。
摘要由CSDN通过智能技术生成

泛型是一种“代码模板”,可以用一套代码套用各种类型。

定义

泛型的定义,可以按照如下格式:

package com.sj;

public class Person<T> {

    private T value;

    public Person() {
    }

    public Person(T value) {
        this.value = value;
    }

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    // 静态方法,泛型使用方式不同,请注意。这里的“K”已经和泛型“T”不一样了
    public static <K> Person<K> newInstance(K name) {
        return new Person<K>(name);
    }

}

T就是泛型,此外,要注意类名后面一定要带着<T>

使用

import obj.person.Person;

public class TestWhatever {

    public static void main(String[] args) {

        // 泛型设置为String
        Person<String> stringPerson = new Person<>();
        stringPerson.setValue("秋佳");
        String value = stringPerson.getValue();


        // 泛型设置为Integer
        Person<Integer> integerPerson = new Person<>();
        integerPerson.setValue(95);
        Integer value1 = integerPerson.getValue();

    }
}

泛型可以看作是一种“代码模板”。示例中的Person类,在创建对象时可以将泛型定义为任意类,则value属性就可以是任意类型。可是如果在Person类中,将value类型设置为Objectvalue也可以是任意类型啊,那么为什么要使用泛型呢?这里就要提到泛型的另一个作用:限制类型。比如ArrayList,我设置泛型为String,则你只能为ArrayList中添加String类型的值,如果为它添加其他类型的值,编译器就会报错。

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add(new Person<Boolean>()); // 编译器报错
}

此外,当你指定泛型之后,在取值的时候,也不需要强制转换类型。例如:

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    String s = list.get(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值