Java泛型总结

Java泛型总结
1、概念
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
2、泛型优点
Java语言中引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。泛型的主要目的之一就是用来指定容器要持有什么类型的的对象,而且由编译器来保证类型的正确性。
在没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
3、泛型在使用中还有一些规则和限制  
1)泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2)同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。  
3)泛型的类型参数可以有多个。
4)泛型的参数类型可以使用extends语句,例如。习惯上成为“有界类型”。
5)不能直接new一个泛型数组,如arr = new T[10]。
6)构造方法中不加泛型参数。
7)不能new一个泛型对象,如new T()
4、泛型类
一个泛型类就是具有一个或多个类型变量的类。定义一个泛型类就是在类名后面加上<>,再在里面加上类型参数代替以前的Object,比如下面以T为例:

class Pair<T> {
	private T value;
        public Pair(T value) {
                this.value=value;
        }
        public T getValue() {
		return value;
	}
	public void setValue(T value) {
		this.value = value;
	}
}

5、泛型接口
定义泛型接口和泛型类差不多,一般来说,如果一个类实现了一个泛型接口,那么该类也必须是泛型的。看下面简单的例子:

interface Show<T,U>{
	void show(T t,U u);
}
 
class ShowTest implements Show<String,Date>{
	@Override
	public void show(String str,Date date) {
		System.out.println(str);
		System.out.println(date);
	}
}

测试:

public static void main(String[] args) throws ClassNotFoundException {
		ShowTest showTest=new ShowTest();
		showTest.show("Hello",new Date());

6、泛型方法
常见的泛型都是用到整个类上,但其实可以在类中包含参数化方法,而且这个方法所在的类可以是泛型类,也可以不是泛型类。也就是说是否拥有泛型方法,与其所在的类是否是泛型类没有关系。定义泛型方法时,必须在返回值前边加一个,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。
使用泛型方法,要传递方法的形式类型参数的实际类型参数,我们必须在方法调用中的点和方法名之间的尖括号<>中指定它。

class MyBag<T> {
  private T value;
  public MyBag(T value) {
    this.value = value;
  }
  public T get() {
    return value;
  }
  public void set(T a) {
    this.value = a;
  }
}
class Test<T> {
  public <V> void m1(MyBag<V> a, MyBag<V> b, T c) {
  }
}
public class Main {
  public static void main(String[] argv) {
    Test<String> t = new Test<String>();
    MyBag<Integer> w1 = new MyBag<Integer>(new Integer(201));
    MyBag<Integer> w2 = new MyBag<Integer>(new Integer(202));
    // Specify that Integer is the actual type for the type parameter for m1()
    t.<Integer>m1(w1, w2, "hello");
    t.m1(w1, w2, "hello");
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值