黑马程序员----泛形

  ------- android培训java培训、期待与您交流! ----------


 

黑马程序员----泛形

为了创建可以按类型进行参数化的类,把类型参数作为使用参数类型时指定的类型占位符的一种表现能力。

 

好处:

通过限定添加类型,保证类型的安全。

消除强制类型的转换的麻烦。

提高的维护性;

 

使用:

声明带泛型的类:

class 类名<泛型类型1,泛型类型2……>

{

    泛型类型  变量名;

    泛型类型  方法名(){}

    返回值类型 方法名(泛型类型 变量名){}

}

 

使用带泛型的类:

类名<具体类> 对象名 =new 类名<具体类>();

 

Eg:

public class demo<Q> //声明任意符号的标识符

{  

    private Q x;  //变量类型由外部组成

    private Q y;

   

    public Q getX()

{

        return x;

    }

    public void setX(Q x)//类型由外部决定

{  

        this.x = x;

    }

}

Public static void main(String Args[])

{

    demo<String> d =new demo<String >();  //定义具体类型,明确是装什么类型,保证类型安全。

 

    d.setX(“第一个”);

    d.setY(“另外一个”);    //此时就能保证集合里元素类型一致

    String x=d.getX();

 

    demo<Double> d =new demo<Double >();  //定义具体类型,避免强转。          d.setX(“1.3”);

    d.setY(“2.3”);

    Double x=d.getY();

}

 

声明泛型接口:

Eg:

public interface inter<T>{}

 

实现接口:

    public class imp<T>implements inter<T>{}

public class imp implements iter<Integer>{}

 

声明泛型方法

 

格式:

<泛型标签> 返回值类型方法名([泛型标签 参数]...)

Eg: public static <T > List<T> add(T t){}

 

声明多个泛型类型:

只要在声明类的时候指定多个泛型类型即可

 

Eg:

 

Public abstract class duo<K,V>

{

   

abstract swap(K k,V v);

    V get(K k);

}

 

泛型的上限与下限

当参数类型只能是目标类型或其子类时:

声明对象:类名<? extends 类> 对象名

定义类:类名<泛型标签 extends 类>{}

 

Eg:public static void add(List<? extendsNumber> l){}

add(1);

add(1.6);

add(“1.222”);//错误。

 

当参数类型只能是该类型或该类型的父类:

声明对象:类名<? super 类> 对象名称

定义类:类名<泛型标签 extends类>{}

Eg:public static void add(List<? superString> l){}

add(”字符串”);

add(new object());

add(1);//错误。

 

其中 ?是通配符,表示未知类型的泛型对象,即接受任意类型,当类型不确定的时候不能被使用。

Eg:List<?> list = new ArrayList<>();list.add(10);//?未确定,不能被使用。

 

泛型的嵌套:

经常见于与Map的运用的时候。

Map<Integer, String> m= new TreeMap<Integer, String>();

Set<Entry<Integer, String>>s = m.entrySet();

Iterator<Entry<Integer,String>> it = s.iterator();

while(it.hasNext())

{

Entry<Integer, String> e = it.next();//用泛型消强转。

System.out.println(e.getKey()+e.getValue());

}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值