泛型

简介: 泛型

泛型

定义:

泛型指得是“参数化的类型”。通俗来讲就是我们要传入一个变量a,但是a具体是什么类型我们暂不确定,就给它定义为一个泛型(成为类型形参),等到后面a类型确定再传入具体类型(成为类型实参)。

 

使用:

泛型的使用有三种场景:在类中的使用、在接口中的使用、在方法中的使用。

 

l 类中的使用:

// 定义一个泛类

public class ClassName<T>{

private T data;

public T getData() {

return data;

}

public void setData(T data) {

this.data = data;

}

}

l 接口中的使用:

public interface IntercaceName<T>{

T getData();

}

实现接口时,可以选择指定泛型类型,也可以选择不指定, 如下:

指定类型:

public class Interface1 implements IntercaceName<String> {

private String text;

  @Override

  public String getData() {

    return text;

  }

}

不指定类型:

public class Interface1<T> implements IntercaceName<T> {

private T data;

  @Override

  public T getData() {

    return data;

  }

}

l 在方法中的使用:

private static <T>返回类型 方法名(T a,T b){}

泛型的范围限定

泛型的范围限定指的是后面只能有指定的类型才能传入泛型中。

 

注意的是类名也可以作为一种类型

 

例如:private Express a;(Express为类)

 

在泛型范围的限制上有两种场合:

 

l 在类上限制类型:

interface Fruit{}

class Apple implements Fruit{}

class Plate<T extends Fruit>{

   T data;

}

Plate<Apple> p = new Plate<>();

第三行在泛型的限定中,无论是接口还是类统一使用extends

结果:这样限定的泛型T,只能是Fruit的子类。

l 在使用中限制类型:

这种限制就是使用关键字"?"泛型中的通配符;

<? extends Parent>指定泛类型的上界

Plate<? extends Fruit> p = new Plate<Apple>();

1指定了泛型只能为Fruit中的子类

泛型的作用:

1.提高代码的复用率。

2.泛型中的类型在使用时自动,不需要进行强转,使用更广泛。

泛型的注意事项:

在编译之后程序会采取去泛型化的措施。

也就是说Java中的泛型,只在编译阶段有效。

在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段

相关文章
|
6月前
|
存储 安全 Java
这还是你认识的泛型吗???!
这还是你认识的泛型吗???!
47 0
|
存储 算法 编译器
泛型的讲解
泛型的讲解
59 0
|
Java 编译器
|
存储 C#
【C#】什么是泛型?
泛型是C#编程中一个非常重要的概念,它能够编写更加通用、灵活和可重用的代码,能够编写可以在不同类型之间工作的代码,同时还可以提高代码的效率和可维护性。在本文中,我们将探讨泛型及其在C#编程中的应用。
|
存储 Java 编译器
对泛型的认识
对泛型的认识
|
Java 编译器 API
泛型-详解
泛型-详解
124 0
泛型-详解
|
安全 Java 编译器
你了解泛型吗?
面向对象编程中,多态算是一种泛化机制。你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。
|
存储 Java 编译器
一文带你玩转“泛型“
一文带你玩转“泛型“
154 0
一文带你玩转“泛型“
|
存储 开发框架 安全
一文搞定泛型知识
一文搞定泛型知识
98 0
|
Java 编译器 安全
关于泛型,你可能不知道的事儿
型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。
1590 0