自学内容网 自学内容网

Java泛型

目录

一.介绍

二.语法

1.声明

2.实例化

3.注意事项

4.泛型的继承和通配符

三.自定义泛型

1.自定义泛型类

2.自定义泛型接口

3.自定义泛型方法


一.介绍

泛型又称参数化类型,其实参数化类型这个名更好理解,一个类型可以像参数一样被使用,下面给大家看一个例子:

class Person<T>{
    public T name;
    public Person(T name) {
        this.name = name;
    }
}

这个T就是一个数据类型,我们可以自行定义传入的类型是什么,它可以是String name,也可以是int name。

总的来说,泛式是在类的声明时,通过一个标识表示类中某个属性的类型,某个方法的返回值的类型或参数类型。

二.语法

1.声明

interface 接口<T>{} 和 class 类<K,V>{}

说明:

1)其中,T,K,V不代表指,表示的类型;

2)这个表示类型的字母可以是任何字母,但是推荐使用T (Type).

2.实例化

在类后指定类型参数的值。

Set<String> set=new HashSet<String>();
ArrayList<Dog> arrayList=new ArrayList<Dog>();

3.注意事项

1)泛型只能使用引用类型,像:ArrayList<int> arrayList=new ArrayList<int>(); 这种就不对;

2)在指定泛型具体类型后,可传入给类型或其子类型;

3)我们再写泛型的时候,像这样的 Set<String> set=new HashSet<String>(); 在Java8后,其实后面的<>中可以不填,可以写成 Set<String> set=new HashSet<>(); 

4)没有给泛型指定具体类型,默认是Object类。

4.泛型的继承和通配符

泛型不具备继承性。

<?>:支持任意泛型类型;

<?extends A>:支持A类以及A类的子类,规定了泛型的上限;

<?super A>:支持A类以及A类的父类,规定了泛型的下限。

三.自定义泛型

1.自定义泛型类

基础语法:class 类名<T,R...>{成员}

注意事项:

1)泛型标识符可以有多个;

2)普通成员可以使用泛型;

3)使用泛型数组不能初始化;

4)静态方法中不能使用类的泛型;

5)泛型类的类型,是在创建对象时确定的;如果在创建对象时没有指定类型,默认为Object。

2.自定义泛型接口

基本语法:interface 接口名<T,R...>{}

注意事项:

1)接口中,静态成员不能使用泛型;

2)泛型接口的类型,在继承接口或实现接口时必须确定,不能也写泛型;

3)没有指定类型,默认为Object。

3.自定义泛型方法

基本语法:修饰符 <T,R...> 返回类型 方法名(参数列表)

注意事项:

1)泛型方法,可以定义在普通类中,也可以定义在泛型类中;

2)当泛型方法被调用时,类型会确定必须。


原文地址:https://blog.csdn.net/lllsure/article/details/142735893

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!