Java中的常用类保姆级教程(下)

简介: 泛型

六、泛型


6.1、泛型的概述


泛型其实就是一种数据类型,主要用于某个类或者接口中的数据类型不确定的时候,可以用一个标识符或者占位符来标书未知的数据类型,然后再使用该类或者该接口的时候可以指定该位置类型的真实类型


泛型可以用到接口、类、方法中,将数据类型作为参数传递,其实更像是一种数据类型的模板。


如果不使用泛型的话,从容器中获取出来的元素,由于我们不知道类型,所以需要强制类型转换


6.2、自定义和使用泛型


定义泛型


我们可以使用一个标识符,比如T(Type)在类中表示一种未知的数据类型


//在类上声明使用符号T,表示未知的类型
public class Point<T> {
  private T x;
  private T y;
  //省略getter/setter
}


使用泛型


一般在创建对象时,给未知的类型设置一个具体的类型,当没有指定泛型时,默认类型为Object类型。


//没有使用泛型,默认类型是Object
Point p1 = new Point();
Object x1 = p1.getX();
//使用String作为泛型类型
Point<String> p2 = new Point<String>();
String x2 = p2.getX();
//使用Integer作为泛型类型
Point<Integer> p3 = new Point<Integer>();
Integer x3 = p3.getX();


6.3、在集合中使用泛型


class ArrayList<E>{
  public boolean add(E e){ }
  public E get(int index){ }
}


此时的E也仅仅是一个占位符,我们知道这里仅仅只是一个元素,但是不知道是什么类型,E表示元素(Element)的类型,那么当使用容器时给出泛型就表示,该容器只能存储某种类型的数据。


//只能存储String类型的集合
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
//只能存储Integer类型的集合
List<Integer> list2 = new ArrayList<Integer>();
list2.add(11);
list2.add(22)


由于集合的前后两个类型必须相同,所以在JDK1.8之后就可以省略后面实例化对象的时候的泛型的书写


List<String> list1 = new ArrayList<String>();
// 可以简写为
List<String> list1 = new ArrayList<>();


注意


1.泛型必须是引用类型,不能是基本数据类型


List<int> list = new ArrayList<int>();//编译错误


  1. 泛型不存在继承的关系


List<Object> list = new ArrayList<String>(); //编译错误


方法中,将数据类型作为参数传递,其实更像是一种数据类型的模板。


如果不使用泛型的话,从容器中获取出来的元素,由于我们不知道类型,所以需要强制类型转换


作者:XiaoLin_Java

链接:https://juejin.cn/post/6983686380119392264

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
1天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
19天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
11天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
19天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
19天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
19天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
下一篇
无影云桌面