`
yjf997234900.
  • 浏览: 7354 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员-泛型入门

    博客分类:
  • JAVA
阅读更多

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

Java泛型由来的动机

理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换(casting)上的操作:

1 List<Apple> box = ...;
2 Apple apple = box.get(0);

上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例,这个过程不需要进行类型转换。没有泛型,上面的代码需要写成这样:

1 List box = ...;
2 Apple apple = (Apple) box.get(0);

很明显,泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换操作:编译器保证了这些类型转换的绝对无误。

我们在联系集合时,经常会有这样的错误:

--------------------配置: <默认>--------------------
注意: D:\TDDOWNLOAD\javawork\java集合\Collection和Iteraror接口\TestIterator.java 使用了未经检查或不安全的操作。
注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。

----------------------------------------------------------------------------------------------------------------------------------

这就是编译器提醒我们执行类型检查,否则box 编译就变成Object类型,需要强制转换。

 

现在我们来一段代码加深理解:泛型类的声明:

public class Apple<T>//定义Apple类型时使用泛型声明
{
	private T info;//使用T类型形参定义属性
	private Apple()
	{
	}
	public Apple(T info)//使T类型形参来定义方法
	{
		this.info=info;
	}
	public void setInfo(T info)
	{
		this.info=info;
	}
	public T getInfo()
	{
		return this.info;
	}
	public static void main(String[] args)
	{
		//传给T形参的是String实际类型,所以构造器的参数只能是String
		Apple<String> a1=new Apple<String>("苹果");
		System.out.println(a1.getInfo());
		//传给T形参的是Double实际类型,所以构造器的参数只能是Double
		Apple<Double> a2=new Apple<Double>(5.67);
		System.out.println(a2.getInfo());
	}
}

 上面是泛型类的声明。

当然泛型的构成还有接口和方法的声明,和泛型构造器的声明

泛型接口

一个接口可以有多个类型变量,类型变量有<>括起来,放在接口名的后面

 

 

public interface List<T> extends Collection<T>

{

   .....
  }

 

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

分享到:
评论

相关推荐

    全网首发黑马程序员鸿蒙 HarmonyOS NEXT星河版零基础入门到实战,零基础也能快速入门鸿蒙开发教程2

    《全网首发黑马程序员鸿蒙 HarmonyOS NEXT星河版零基础入门到实战》是一套针对初学者精心设计的鸿蒙操作系统开发教程。本教程旨在帮助没有编程基础的学员快速掌握HarmonyOS的开发技能,通过丰富的实例和清晰的讲解,...

    B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记

    【标题】:“B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记” 【描述】提及的是一个针对初学者的C++教学资源,来自B站上的视频课程“BV1et411b73Z”。这门课程的特色在于提供了一份...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员C++教程讲义-保真

    黑马程序员的C++教程讲义会系统地介绍这些概念,帮助初学者从0到1逐步掌握C++编程。"assets"目录可能包含相关的辅助材料,如示例代码、图片或课件,这些资源可以增强学习体验,使理论与实践相结合。

    c++入门,核心,提高讲义笔记

    模板则提供了泛型编程的能力,允许编写适用于多种数据类型的代码。 异常处理是错误处理的重要机制,通过`try-catch`块捕获和处理运行时可能出现的异常,确保程序的健壮性。 随着对C++基础知识的深入理解和实践,...

    【讲义】匠心精作C++从0到1入门编程-学习编程不再难.zip

    7. **第6阶段实战-基于STL泛化编程的演讲比赛资料**:通过使用STL的模板和泛型编程,学习者将设计一个演讲比赛管理系统,这要求对C++的泛型编程有深入理解,能够编写出更加灵活和可重用的代码。 8. **第7阶段-C++...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...

    2018年最新传智博客黑马程序员JavaEE49期全套视频,亲测有效

    该套视频课程作为2018年传智博客黑马程序员JavaEE49期的全套资源,不仅覆盖了JavaEE的基础理论知识,还深入介绍了多种主流框架的实际应用,并提供了丰富的实战案例。对于想要入门或提高JavaEE开发能力的学习者而言,...

    Scala编程语言详解(从入门到精通)spark

    - **可扩展性**:Scala 的设计考虑到了可扩展性,支持通过 Trait 实现混入组合(Mixin Composition)、抽象类型成员、泛型等多种机制。 - **强大的类型系统**:Scala 的类型系统比 Java 更加强大和灵活,支持类型...

    java基础教程-pdf注释版-我的入门资料

    重要的版本更新包括Java 1.1、Java 1.2(引入了Swing库,增强了Java的图形用户界面组件),Java 1.3(主要性能改进),Java 1.4(引入了日志记录框架,增强了XML支持),Java 5(引入了泛型、注解等特性)等。...

    C#程序设计基础入门教程(第2版)-源代码.rar

    《C#程序设计基础入门教程(第2版)》是一本专为初学者设计的编程教材,它深入浅出地介绍了C#语言的基础知识和核心概念。本教程的源代码包含在名为“源代码”的RAR压缩包中,是学习过程中实践操作的重要资源。 在C#...

    Java基础案例教程(第2版)-教学设计.zip

    "程序,这是编程入门的经典案例。 接着,教程会深入讲解Java语法基础,包括数据类型(基本类型与引用类型)、变量、常量、运算符、流程控制语句(如if-else、switch、for、while等)。这些知识点是构建任何程序的...

    2019最新java视频教程从基础到进阶到精通

    根据提供的文件信息,本篇文章将围绕“2019最新java...这门课程不仅适合新手入门,也为想要进一步提升自己Java技能的开发者提供了丰富的资源。希望每位学习者都能通过本次教程的学习,逐步成长为一名优秀的Java程序员。

    java学习路线(鱼皮)

    在Java入门阶段,学习者需要掌握Java基础语法、数据类型、流程控制、数组、面向对象、方法重载、封装、继承、多态、抽象类、接口、枚举、常用类、String、日期时间、集合类、泛型、注解、异常处理、多线程、IO流、...

    Java基础最全笔记文档

    Java加强篇则进一步深入,如静态关键字`static`、单例设计模式、权限修饰符、枚举、抽象类、多态、内部类,以及更复杂的集合框架(如List、Set、Map)和泛型。除此之外,还有日期时间处理、正则表达式、异常处理、IO...

    C++基础&amp;核心讲义.zip

    C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动程序等各个领域。它的设计思想是“面向对象”...黑马程序员的C++视频教程应该会提供丰富的实例和练习,帮助初学者逐步精通C++。

Global site tag (gtag.js) - Google Analytics