Java学习笔记-泛型

1. 泛型(generics)的产生
泛型从JDK5引入,目的是将类型参数化
格式:
集合类<类类型> 变量名 = new 集合类<类类型>( );
使用泛型的好处:
a.能够将程序运行时会出现的问题提前到了编译阶段;
b.获取元素的时候不用强制类型转换,避免了无谓的强制类型转换。
使用条件:
当类中操作的引用数据类型不确定的时候就可以使用泛型。
注意:
a.申明好数据类型之后,只能存入相应的数据类型,存入其他类型编译会报错;
b.泛型类型必须是引用类型,基本数据类型必须要转换成相应的包装类;
c.使用泛型之后取数据的时候不需要数据类型转换。

基本类包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
public class FxDemo1{
    public static void main(String[] args){
        ArrayList<String> arr = new ArrayList<>();
        arr.add("wanger");
        arr.add("zhangsan");
        arr.add("lisi");
        //下面编译会报错
        arr.add(123);
        //取出数据
        String str=arr.get(0);
        System.out.println(str);
    }
}

泛型方法:将类型当作变量来处理,一般用一个任意的大写字母来定义。
格式
修饰符 <声明自定义泛型> 返回值类型 函数名(形参列表){ }
使用泛型方法,调用者传入某种类型的变量,该函数就返回相应类型的变量。
示例:
import java.util.*;
public class Frdemo2{
    
        //输出数组元素的泛型方法
        public static <T> void printArray(T[] inputArray){
            for (T arr :inputArray){
                System.out.printf("%s",arr);
            }
        }
        public static void main(String args[]){
            //创建各种类型数组
            Integer[] intarr = {1,2,3,4,5,6};
            Double[] doublearr={1.1,2.2,3.3,4.4,5.5,6.6};
            Character[] chararr={'A','B','C','D','E','F'};
            System.out.println("依次输出数组元素:");
            printArray(intarr);
            System.out.println("  ");
            printArray(doublearr);
            System.out.println("  ");
            printArray(intarr);
        }
    }
泛型类:
格式:
修饰符 class 类名<泛型>{ }
注意:静态方法不可以使用类中定义的泛型。
因为类中的泛型需要在对象初始化时指定具体的类型,而静态优先于对象存在。那么在类中的静态方法就需要单独进行泛型声明,声明泛型在static之后,返回值类型之前。
import java.util.*;
public class Frdemo<T> {
   
  private T t;
 
  public void add(T t) {
    this.t = t;
  }
 
  public T get() {
    return t;
  }
 
  public static void main(String[] args) {
    Frdemox<Integer> integerFrdemo= new Frdemo<Integer>();
    Frdemo<String> stringFrdemo = new Frdemo<String>();
 
    integerFrdemo.add(new Integer(1));
    stringFrdemo.add(new String("shishi"));
 
    System.out.printf("整型值为 :%d\n\n", integerFrdemo.get());
    System.out.printf("字符串为 :%s\n", stringFrdemo.get());
  }
}

泛型接口
格式:
interface 接口名<声明自定义的泛型>
注:
1.在接口上自定义泛型的具体数据类型是在实现该接口的时候指定的。
2.如果一个接口自定义了泛型,在实现该接口的时候没有指定具体的数据类型,那么默认是Object数据类型。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值