java基础学习-泛型

泛型

泛型(Generic type 或者 generics)是对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型的好处

类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。
消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

使用语法

1)泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2)同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3)泛型的类型参数可以有多个。
4)泛型的参数类型可以使用extends语句来做类型限制(不管后面是接口还是类都用extent),例如<T extends superclass>。习惯上成为“有界类型”。默认情况,extends object。
5)泛型的参数类型还可以是通配符类型(应对未知类型)。
例如Class<?> classType = Class.forName(ArrayList);
Class<?> classType = Class.forName(LinkedList);

简单例子

public class GenericFoo<T> {
	private T foo;

	public T getFoo() {
		return foo;
	}

	public void setFoo(T foo) {
		this.foo = foo;
	}

	public static void main(String[] args) {
		GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();
		GenericFoo<Integer> foo2 = new GenericFoo<Integer>();
		foo1.setFoo(new Boolean(false));
		foo2.setFoo(new Integer(3));
		Boolean b = foo1.getFoo();
		Integer i = foo2.getFoo();
		System.out.println(b);//false
		System.out.println(i);//3
		// foo1 = foo2;
		GenericFoo a = new GenericFoo();
		a.setFoo("hello");
		String str = (String) a.getFoo();
		System.out.println(str);//hello
	}
}

结合EE使用
基本接口类
public interface IBaseDao<T> {
	public Serializable save(T o);
}

节本实现类
public class BaseDaoImpl<T> implements IBaseDao<T> {

	@Override
	public Serializable save(T o) {
		return null;
	}

}

业务实现接口
public interface IUserDao extends IBaseDao<User> {

}
业务实现接口
public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao  {

}

调用
public class Client {

	public static void main(String[] args) {
		IUserDao daoI=null;
		User t=null;
		daoI.save(t);

	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值