Day36泛型

泛型提供编译时类型安全检测,允许指定操作的数据类型参数化。它可以应用于类、方法和接口,如泛型类`Generic<T>`和泛型方法`<T>voidshow(Tt)`。类型通配符如`<?>`,`<?extendsNumber>`和`<?superNumber>`用于限制或扩展兼容类型。
摘要由CSDN通过智能技术生成

泛型

  1. 泛型提供了编译时类型安全检测机制,其允许编译时检测到非法的类型,本质是参数化类型,所操作的数据类型被指定为一个参数。参数化类型就是将类型由原来的具体的类型参数化,然后在使用或调用时传入具体的类型;这种参数类型可以用在类,方法和接口中,分别被称为泛型类,泛型方法和泛型接口。

//泛型定义格式:<类型>:指定一种类型的格式,这里类型可以看成是形参。 <类型1,类型2……>:指定多种类型格式,多种类型之间可以用逗号隔开,这里的类型可以看成是形参。 将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型。泛型可以避免强制转换。

  1. 泛型类定义格式:格式:修饰符class 类名<类型>{} 范例:public class Generic<T>{}。T可以是随便为任意标识,常见如:T,E,K,V,等形式的参数常用于表示泛型。

public class Generic<T>{   //当传入进来的T是String类型时,实参就是String类型;如果是Integer类型,实参是Integer类型。
    private T t;
    private T gerT(){
        return t;
    }
    public void setT(T t){
        this.t = t;
    }
}
//测试类
public class GenericDemo{
    public static void main(String[] args){
        Generic<String> g1 = new Generic<String>();
        g1.setT("令狐冲");
        System.out.println(g1.getT());
        
        Generic<Integer> g2 = new Generic<Integer>();
        g2.setT(30);
        System.out.println(g2.getT());
    }
}
​
  1. 泛型方法定义格式:修饰符 <类型> 返回值类型方法名(类型 变量名){ } 范例:public <T> void show (T t){ }

public class Generic{
    public <T> void show(T t){
        System.out.println(t);
    }
}
//测试类
public class GenericDemo{
    public static void main(String[] args){
        Generic g = new Generic();
        g.show("令狐冲");
        g.show(30);
        g.show(true);
    }
}
  1. 泛型接口定义格式:修饰符 interface接口名<类型>{ } 范例:public interface Generic<T>{ }

//定义一个泛型接口
public interface Gerneric<T>{
    void show(T t);
}
//接口无法直接实例化,定义一个接口实现类
public class GenericImp<T> implements Generic<T>{
    @Override
    public void show(T t){
        System.out.println(t);
    }
}
//测试类
pubblic class GenericDemo{
    public static void main(String[] args){
        Generic<String> g1 = new GenericImpl<String>();
        g1.show("令狐冲");
        Generic<Integer> g2 = new GenericImpl<Integer>();
        g2.show(30);
    }
}
  1. 类型通配符<?>:如List<?>:表示元素类型未知的List,它的元素可以匹配任何的类型,这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素添加到其中。类型通配符上限定:<? extends 类型> 如:List<? extends Number>:它表示的类型是Number或者其子类型。 类型通配符的下限:<? super 类型> 如:List<? super Number>:表示的类型是Number或者其父类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值