java——泛型

泛型类

  1. JDK1.5之后才引入了泛型;
  2. 泛型的语法格式:
   	例如:(1)public class ArrayList <E>
   		 (2)public class HashMap<K,V>
   		 (3)public interface Collection<E>

  1. 使用泛型要求传给泛型类或泛型接口的类型必须是引用数据类型,不能是基本数据类型;
  2. 如何向泛型类或泛型接口指定实参类型?
	(1)创建对象:ArrayList< String > arrayList = new ArrayList< String >();
	(2)子类继承泛型类:泛型类: public class GenerClass<T>
						子类:   public class ExtendsGenerClass extends GenerClass<String>
	(3)实现泛型接口:public class ImplementsGenerInterface implements Comparable<String>
  1. 泛型是可以指定上限的:
	public class GenerClass<T extends Number>  // 泛型类指定了传入类型的上限是Number类
	public class ExtendsGenerClass extends GenerClass<Integer> // 那么使用时指定的类型就必须是Number类或Number的子类
	public class ExtendsGenerClass extends GenerClass<String>  // 错误的。String不是Number的子类,是不能指定的
	
	// 上限是可以指定多个的,注意:设定多个上限时类写在接口左边
	public class GenerClass<T extends Number & Comparable>  // 多上限时,使用该泛型类传入的类型需要同时满足多个上限条件
  1. 类上面的泛型可以用在哪些地方,又不可以用在哪些地方?
    (1)泛型可以用在属性方法的数据形参、局部变量等地方;
    (2)类上面的泛型不可以用在静态成员上;
  2. 如果在使用泛型类或泛型接口的时候没有指定类型会怎么样?
    (1)如果泛型类没有设置实参上限,会按照Object处理;
    (2)如果泛型类设置了实参上限,会按照第一个实参上限处理;

泛型方法

  1. 什么情况下需要声明泛型方法呢?
    (1)因为类的泛型是不能用在静态方法上的,所以静态方法想要使用泛型就需要自己单独设计;
    (2)如果泛型类或泛型接口的形参类型不能适用于某个方法(静态或非静态都算),那么这个方法就需要自己单独设计泛型;
  2. 泛型方法的语法格式:
    【修饰符】<泛型形参列表> 返回值类型 函数名(【数据型参数列表】){ }
  3. 泛型方法 实参的类型是如何指定的呢?
    当我们调用方法的时候,编译器会自动根据我们传入的参数来判断泛型形参的具体类型;
  4. 泛型方法也是可以指定上限的(类似于泛型类,也可以指定多上限),那我们在调用时如果传入的实参类型不是上限类型或上限类型的子类就会报错编译错误;

通配符

1<?>  ?代表可以是任意类型;2<? extends 上限>  ?代表可以是上限类型或上限类型的任意子类类型;3<? super 下限>   ?代表可以是下限或下限的任意父类类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值