泛型笔记

本文深入探讨了Java泛型与数组、容器之间的区别,详细解释了Arrays.asList()方法的工作原理,介绍了Introspector内省的用途,并讨论了泛型在静态方法中的限制、catch语句与泛型异常的关系以及注解的保留阶段。同时,文章还对比了==与equals方法的区别,并强调了重写hashCode方法的重要性。最后,文章提到了泛型数组的应用与限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组与其他容器的区别:效率高
其他容器通过自动包装也可以包含基本类型,另外泛型不支持基本数据类型。

Arrays.asList使用泛型实现的,不支持原型数据。
即如果是int[]数组,则asList返回的还是一个地址。而Integer则可以被处理一个列表。
public static <T> List<T> asList(T... a)

Introspector 内省

泛型的类型是给编译器看得,由于泛型的擦除特性,如果用反射则可以绕过泛型。

在Java的泛型里,对于static方法而言,是无法访问泛型类的类型参数的.因此,如果想让static方法具有泛型能力,就必须使其成为泛型方法.
catch()语句中是不能Catch 泛型类型的异常,但是throw中是可以throw泛型类型的异常。

注解retention阶段分为三种,默认为class:
source(编译阶段用,比如Override,SuppressWarnings), class, runtime(一直到运行时有效比如Deprecated)

最开始是StringBuffer,最通用的名字,后来在1.5中加了一个轻便的StringBuilder

==与equals的区别
==号
对于基本类型可以比较值的不同。
对于引用类型,只能比较地址。如果想比较对象的内容,则必须用equals实现。

而如果实现了equals的对象如果用于容器,则最好重写hashCode()方法。

equals写法

boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if(getClass() != obj.getClass()){
return false;
}

//obj的其他成员进行比较
}

所有想实现clone功能的类都必须实现Cloneable接口才可以。

不能定义泛型数组,但是可以声明泛型数组,将普通的数组赋值给泛型数组,起到类型限制的作用。

以上。


### 尚硅谷 Java 学习资料与笔记 #### 关于Java的基础概念 Java提供了一种机制,使得可以编写适用于多种类的代码而无需针对每一种类都单独重写相同的逻辑。这不仅提高了代码的可维护性和安全性,还增强了程序的功能灵活性[^4]。 #### 使用通配符增强功能 当处理未知的具体参数化类时,可以通过使用`?`作为通配符来表示不确定的类。对于只读操作而言非常有用;然而需要注意的是,如果尝试向此类列表中添加任何非`null`的对象,则会导致编译错误[^3]。 ```java public static void read(List<?> list) { for (Object o : list) { System.out.println(o); } } ``` 这段代码展示了如何遍历一个包含任意类元素的集合并打印它们的内容。由于我们不知道实际存储着什么类的对象,所以只能将其视为`Object`来进行访问。 #### 定义带有一个或多个类形参的类 创建自定义类能够使开发者更方便地管理不同种类的数据结构。下面的例子说明了怎样声明带有单个类变量`T`的一般形式以及相应的构造函数: ```java // 自定义类 public class Order<T> { private T temp; public Order(T temp) { this.temp = temp; } // getter 和 setter 方法... } ``` 此外还有支持多维数组转换成列表的方法实现方式如下所示: ```java // 自定义方法 public static <E> List<E> MyArrayToList(E[] arr) { ArrayList<E> list = new ArrayList<>(); for (E element : arr) { list.add(element); } return list; } ``` 上述例子中的静态方法接受一个由某种特定类组成的数组,并返回相同类的动态大小列表。这里的关键在于利用尖括号内的字母(如这里的`<E>`),它告诉编译器该方法本身也具有特性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值