泛型

简介: 泛型

泛型

定义:

泛型指得是“参数化的类型”。通俗来讲就是我们要传入一个变量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
深入理解泛型
深入理解泛型
|
存储 安全 Java
泛型的使用
泛型的使用
67 0
|
6月前
|
安全 编译器 Scala
何时需要指定泛型:Scala编程指南
本文是Scala编程指南,介绍了何时需要指定泛型类型参数。泛型提供代码重用和类型安全性,但在编译器无法推断类型、需要提高代码清晰度、调用泛型方法或创建泛型集合时,应明确指定类型参数。通过示例展示了泛型在避免类型错误和增强编译时检查方面的作用,强调了理解泛型使用时机对编写高效Scala代码的重要性。
42 1
何时需要指定泛型:Scala编程指南
|
6月前
|
Java 编译器 语音技术
泛型的理解
泛型的理解
29 0
|
6月前
|
存储 算法 容器
什么是泛型?
什么是泛型?
25 0
|
Java
泛型讲解
本章讲解了什么是泛型以及泛型擦除相关的知识点
81 1
|
存储 C#
【C#】什么是泛型?
泛型是C#编程中一个非常重要的概念,它能够编写更加通用、灵活和可重用的代码,能够编写可以在不同类型之间工作的代码,同时还可以提高代码的效率和可维护性。在本文中,我们将探讨泛型及其在C#编程中的应用。
|
存储 Java 编译器
对泛型的认识
对泛型的认识
|
Java 编译器 API
泛型-详解
泛型-详解
124 0
泛型-详解
|
安全 JavaScript Java
泛型中的 T、E、K、V、?等等,究竟是啥?
泛型中的 T、E、K、V、?等等,究竟是啥?
泛型中的 T、E、K、V、?等等,究竟是啥?