Java中泛型的定义和使用

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

定义

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

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);
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值