Java中泛型使用的必要性

时间:2022-04-29
本文章向大家介绍Java中泛型使用的必要性,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

写过代码的小伙伴们肯定都用过,泛型类型主要用于Java集合中;那么我们为什么要在Java集合中使用泛型呢?带着这个问题,我们看下面的一些概念描述,将有助于理解这个问题。下面的文章中,我将使用一个简单例子来说明这个问题。

网络配图 1、首先我们先了解一下泛型的概述 Java中实现泛型的目的是要在编译时及时发现错误,而不是在运行时才出现问题。因为在编译时发现错误并调试程序可以节省很多时间,因为在编译时错误更容易找到并得到修复;大家一定要记住泛型类型只存在于编译时。这是我们学习Java泛型最重要的一个知识点。 2、假设Java中没有引入泛型,会发生什么呢? 我先定义一个“汽车(Car)”类,在类中定义一些成员变量,如字符串、整数等;看如下代码:

class Car {
private Object object;
public void add(Object object) {
this.object = object;
}
public Object get() {
return object;
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.add(100);
Integer i = (Integer) car.get();
System.out.println(i);
}
}

现在运行程序没有任何问题,因为我们添加一个整数,但如果用户一不小心添加一个字符串“100”,代码编译时,编译器并不知道这是一个问题,当然也不会报错。只有在程序运行时,会提示一个ClassCastException异常。 Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at collection.Main.main(Main.java:21) 到这里你可能会说我直接定义一个整数类型而不是对象;但你有没有想过,一个汽车是有很多部件组成的,定义一个变量也就没什么用了。 3、以下代码中使用了泛型,会是什么结果?

网络配图 如果使用泛型,程序代码如下:

class Car<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
public class Main {
public static void main(String[] args) {
Car<Integer> room = new Car<Integer>();
room.add(100);
Integer i = room.get();
System.out.println(i);
}
}

如果现在代码中写成room.add(“100”),编译时就会提示错误上面的错误,程序员很容易就发现了,而不是到了运行时才出现。

网络配图 最后总结一下,代码中使用泛型的原因有哪些: (1)、强制要求编译器在编译时检查代码,发现错误; (2)、消除显式类型转换的问题; (3)、使代码有更好的可重用性; 有没有说到的地方,欢迎补充!!!