数组与其他容器的区别:效率高
其他容器通过自动包装也可以包含基本类型,另外泛型不支持基本数据类型。
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的其他成员进行比较
}
其他容器通过自动包装也可以包含基本类型,另外泛型不支持基本数据类型。
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泛型与数组、容器之间的区别,详细解释了Arrays.asList()方法的工作原理,介绍了Introspector内省的用途,并讨论了泛型在静态方法中的限制、catch语句与泛型异常的关系以及注解的保留阶段。同时,文章还对比了==与equals方法的区别,并强调了重写hashCode方法的重要性。最后,文章提到了泛型数组的应用与限制。
4892

被折叠的 条评论
为什么被折叠?



