Java进阶之泛型
Java进阶之泛型:类型安全的魔法✨
泛型是Java5引入的一项重要特性,它让我们的代码更加安全、优雅且可重用。让我们一起来探索泛型的魅力吧!🚀
为什么需要泛型?🤔
在泛型出现之前,我们只能使用Object类型来实现通用容器,但这样会导致类型不安全:
```java
Listlist=newArrayList();
list.add("Hello");
Strings=(String)list.get(0);//需要强制类型转换
Integeri=(Integer)list.get(0);//运行时抛出ClassCastException😱
```
泛型的基本用法💡
使用泛型后,代码变得更安全:
```java
Listlist=newArrayList<>();
list.add("Hello");
Strings=list.get(0);//无需强制转换
//list.add(123);//编译时就会报错🛑
```
泛型类和泛型方法🏗️
我们可以创建自己的泛型类:
```java
publicclassBox{
privateTcontent;
publicvoidsetContent(Tcontent){
this.content=content;
}
publicTgetContent(){
returncontent;
}
}
//使用示例
BoxstringBox=newBox<>();
stringBox.setContent("JavaGenerics");
Stringvalue=stringBox.getContent();//类型安全👍
```
也可以定义泛型方法:
```java
publicstaticTgetFirstElement(Listlist){
if(list==null||list.isEmpty()){
returnnull;
}
returnlist.get(0);
}
```
泛型通配符和边界🌈
泛型还支持通配符和边界,提供更灵活的类型约束:
```java
//上界通配符-接受Number及其子类
publicstaticdoublesum(Listlist){
doublesum=0;
for(Numbernum:list){
sum+=num.doubleValue();
}
returnsum;
}
//下界通配符-接受Integer及其父类
publicstaticvoidaddNumbers(Listlist){
for(inti=1;i<=10;i++){
list.add(i);
}
}
```
泛型的限制⚠️
需要注意的是:
1.不能使用基本类型作为泛型参数(如`List`不行,要用`List`)
2.不能创建泛型数组(如`newList[10]`)
3.不能直接实例化类型参数(如`newT()`)
泛型让Java代码更加类型安全,减少了运行时错误,提高了代码的可读性和重用性。掌握泛型是成为Java高手的必经之路!💪
希望这篇介绍能帮助你更好地理解和使用Java泛型!Happycoding!🎉
泛型是Java5引入的一项重要特性,它让我们的代码更加安全、优雅且可重用。让我们一起来探索泛型的魅力吧!🚀
为什么需要泛型?🤔
在泛型出现之前,我们只能使用Object类型来实现通用容器,但这样会导致类型不安全:
```java
Listlist=newArrayList();
list.add("Hello");
Strings=(String)list.get(0);//需要强制类型转换
Integeri=(Integer)list.get(0);//运行时抛出ClassCastException😱
```
泛型的基本用法💡
使用泛型后,代码变得更安全:
```java
Listlist=newArrayList<>();
list.add("Hello");
Strings=list.get(0);//无需强制转换
//list.add(123);//编译时就会报错🛑
```
泛型类和泛型方法🏗️
我们可以创建自己的泛型类:
```java
publicclassBox{
privateTcontent;
publicvoidsetContent(Tcontent){
this.content=content;
}
publicTgetContent(){
returncontent;
}
}
//使用示例
BoxstringBox=newBox<>();
stringBox.setContent("JavaGenerics");
Stringvalue=stringBox.getContent();//类型安全👍
```
也可以定义泛型方法:
```java
publicstaticTgetFirstElement(Listlist){
if(list==null||list.isEmpty()){
returnnull;
}
returnlist.get(0);
}
```
泛型通配符和边界🌈
泛型还支持通配符和边界,提供更灵活的类型约束:
```java
//上界通配符-接受Number及其子类
publicstaticdoublesum(Listlist){
doublesum=0;
for(Numbernum:list){
sum+=num.doubleValue();
}
returnsum;
}
//下界通配符-接受Integer及其父类
publicstaticvoidaddNumbers(Listlist){
for(inti=1;i<=10;i++){
list.add(i);
}
}
```
泛型的限制⚠️
需要注意的是:
1.不能使用基本类型作为泛型参数(如`List`不行,要用`List`)
2.不能创建泛型数组(如`newList[10]`)
3.不能直接实例化类型参数(如`newT()`)
泛型让Java代码更加类型安全,减少了运行时错误,提高了代码的可读性和重用性。掌握泛型是成为Java高手的必经之路!💪
希望这篇介绍能帮助你更好地理解和使用Java泛型!Happycoding!🎉
