代码改变世界

泛型心得

2019-02-27 14:53  Spiderman25  阅读(105)  评论(0)    收藏  举报

Info<String> i=new Info<String>();
Info<Object> temp=i;会出错,尽管String是Object的子类
Info temp=i;可以,但不妥当,会出现警告信息,这时默认为Object进行接收
Info<?> temp=i;可以,但不能设置被泛型指定的内容,如temp.set("dd")会出错,但可以设置为null,
Info<? extends String> temp=i;可以设置值;如temp.set("xx");
类定义以及接收都可以设置上限extends下限super,在类中表示可以接收什么类型的类,在方法中表示可以接收什么类型的类的泛型可以设置多个泛型<T,K,L>

泛型接口
class InfoImpl<T> implements Info<T>
Info<String> i=new InfoImpl<String>("");
class InfoImpl implements Info<String>
Info<String> i=new InfoImpl("");
泛型方法
public <T> T fun(T t){
return t;}就表示接收了什么类型的参数就返回什么类型的参数

public <T extends Number> Info<T> fun(T t){
return t;}这里的T必为Number子类

public <T> T fun(Info<T> i1,Info<T> i2){
return t;}