java学习笔记(一)泛型

泛型

泛型类型 class Person<T,V>

泛型的安全警告
在申明时指定泛型的类型,如果没指定就会在编译时出现警告,但仍然可以执行,因为没指定类型就都是Object类型
Person<String,Integer>p =new Person<String,Integer>();
Person p =new Person();

泛型与子类继承的限制(在泛型中不能用父类来接受子类)

泛型通配符(一般用在参数传递时)
public void fun(Person<?,?> p){//?为通配符

受限泛型
public void fun(Person<? extends Number> p)
?就只能是Number的子类或Number
public void fun(Person<? super String> p)
?就只能是String的父类或自己

泛型接口定义;

interface Info<T>{

public T getVar();

}

泛型接口实现的两种方式

在子类实例化时指定类型

class InfoImpl<T> implements Info<T>{}

在接口被继承时,直接指明类型

class InfoImpl impements Info<String>

泛型方法
定义泛型方法

静态方法不能访问类上定义的泛型

package cn.java.generics;

public class GenericsDemo3 {

	public static void main(String[] args) {
		GenericsFun gf = new GenericsFun();
		System.out.print(gf.test("haoren"));
		System.out.print(gf.test(12));
	}

}

class GenericsFun{
	public <T> T test(T t){
		return t;
	}
}
泛型数组
//作为参数传递
	public <T> void test(T a[]){
		for(int i=0;i<a.length;i++){
			System.out.println(a[i]);
		}
	}
	//返回值为数组
	public<T> T[] testReturn(T a[]){
		return a;
	}
泛型的嵌套
class PersonDemo<T,V>
class Theach<P>
Theach<PersonDemo> th = new Theach<PersonDemo>(new PersonDemo<String,Integer>("haorne",2));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值