Java基础之多态和泛型浅析 一.前言: 楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结 二.什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口(这里所谓的接口是楼主自己发明的,这里不是局限于Java的interface,可以把它看作为广义定义的对象源)的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据…
泛型:jdk1.5后的新特性,用于解决安全问题,是一个安全机制. 好处: 1.将运行时的异常出现问题classcastException.转移到了编译时期.方便程序员调试解决问题,让运行事情问题减少,安全. 2.避免了强制转换 泛型格式:通过<>来定义要操作的引用数据类型. 在使用Java中,什么时候使用泛型呢? 通常在集合框架中很常见,只要见到<>就要定义泛型,其实<>就是用来接收类型的. 当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可.…
今天在群里问了个基础问题,挨喷了..这更加激起了我对知识的渴望.也在此铭记一下,将来有经验了要对刚入门的童鞋们严格点,简单的东西要自己看...唉,程序员何苦为难程序猿呢.. 接下来简单总结下这个万能的泛型吧.. http://files.cnblogs.com/CaptainLin/PullToRefresh.zip 上面链接是stay大神写好的各种下拉刷新View. 进入正题,此包中有个基类是如下定义的.(我刚毕业不久没看懂,毕竟学校讲泛型不多哈-借口) public abstract cla…
第十五章 泛型 一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 在面对对象编程语言中,多态算是一种泛化机制. 泛型实现了参数化类型的概念,使代码可以应用于多种类型. 15.2 简单泛型 创造容器类促进了泛型的出现. 下面是只能持有单个对象的类: class Automobile {} public class Holder1 { private Automobile a; public Holder1…
控制台程序 定义Point类: public class Point { // Create a point from its coordinates public Point(double xVal, double yVal) { x = xVal; y = yVal; } // Create a point from another point public Point(Point point) { x = point.x; y = point.y; } // Convert a point…
我经常会想获取参数的实际类型,在Hibernate中就利用的这一点. domain: Person.java public class Person { // 编号 private Long id; // 姓名 private String name; public Person() { } public Person(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id…
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码. 对数组列表实施插入和删除操作效率比较低,对于小型数组来说可以接受.但是如果数组存储的元素数比较多,又经常需要在中间位置插入.删除元素,就应该考虑使用链表. ArrayList是一个采用类型参数(type parameter)的泛型类(generic class).为了指定数…
简单的介绍了Java泛型类型的使用.上手容易,深入很难.…
参考以下几位同学的总结来学习: http://www.cnblogs.com/lwbqqyumidi/p/3837629.html#!comments http://www.weixueyuan.net/view/6321.html http://www.cnblogs.com/ixenos/p/5645851.html 此外还有几点说明: 1.泛型其实是Java SE 1.5才有的特性 2.java中的泛型是一个语法糖,其实并没有扩充出新的类型.如List<String>和List<I…
话不多说,直接上图 1.Collection集合小结 注意: 凡是使用哈希表保存对象的容器,保存的对象在容器中都是唯一的,唯一性是通过被保存对象的hashCode和equals方法共同确定: 凡是使用二叉树保存对象的容器,保存的对象在容器中都是唯一的,而且保存时就是有序的,有序性和唯一性依赖被保存对象实现Comparable接口,或传递给容器的比较器对象(实现了Comparator接口的对象): ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是…
1 意义 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用. 常见应用 : ArrayList 2 K T V E ? object等的含义 类型变量使用大写形式 E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类)(需要时还可以用临近的字母U和S)表示任意类型  S.U.V – 2nd.3rd.4th types K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配…
一.体验泛型 JDK1.5之前的集合类中存在的问题——可以往集合中加入任意类型的对象,例如下面代码: package cn.gacl.generic.summary; import java.util.ArrayList; public class GenericTest { public static void main(String[] args) { /** * 不使用泛型之前ArrayList容器可以存储任意类型的对象 */ ArrayList collection1 = new Arr…
1 泛型的基本应用 //反射方式 指定类型,就不用强转 Construcctor<String> constructor = String.class.getConstructor(Stringbuffer.class); 泛型是提供给javac编译器使用的,可以限定集合输入的类型, 编译器编译带类型说明的集合时,会除掉类型信息, 返回的数据类型不用强转 2 泛型的内部原理和更深应用 ArrayList<Integer> collection1 = new ArrayList<…
对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.TreeSet; import org.junit.Te…
1. 基本类型包装类概述 (1)将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据. (2)常用的操作的之一:用于基本数据类型与字符串之间的转换. (3)基本类型和包装类的对应 • Byte.Short.Integer.Long.Float.Double.Character.Boolean 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型--------包装类类型. 2. 案例引入: package cn.itcast_0…
11.01_Java开发工具(常见开发工具介绍)(了解) A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) D:Eclipse和MyEclipse的区别 a:Eclipse是一种可扩展的开放源代码的IDE. b:Eclipse的特点描述 免费 纯Java语言编写 免安装 扩展性强 c:MyEclipse 在Eclipse基础上追加的功能性插件,对插件收费 在WEB开发中提供强大的系统架构平台 E:…
什么是变量: 变量就是一个不固定的数值,它随时会改变,就像银行卡里存的钱一样会变动. 变量的格式:1  数据类型 变量名=变量值:  2  数据类型 变量名: 变量名=变量值: 变量的三大要素:1变量类型  2变量名 3变量值 这样说可能有些抽象,我们看图就一目了然: 什么是常量: 常量是在程序执行过程中,数值已经固定好了的,不会发生改变. 常量的格式:只要在变量前加上final. 只能赋值一次,通常在定义的时候会为其初始化. 数据类型分类: 基本数据类型4类8种 A:整数 占用字节  B:浮点…
Java的基本数据类型的包装数据类型有多种: int Integer,short Short,boolean Boolean,float Float,double Double等等. Java包装类数据类型的基本作用,在于基本数据类型与String类型之间的转换. 基本数据类型转字符串类型: 基本数据类型+"" 基本数据类型.toString() 字符串转基本数据类型: xxx  a  =  Xxx.parseXxx(String); 比如:int a = Integer.parseI…
ref: https://www.cnblogs.com/lori/p/8308671.html 在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式: 对象域,使用 equals 方法 . 类型安全的枚举,使用 equals 或== . 可能为 null 的对象域 : 使用 == 和 equals . 数组域 : 使用 Arrays.equals . 除 float 和 double 外的原始数据类型 : 使用 == . float 类型: 使用 Float.foatToInt…
我们直接看案例如下: package cn.itcast_03; import java.util.Scanner; /* * 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数.(不考虑其他字符) * * 分析: * A:定义三个统计变量. * int bigCont=0; * int smalCount=0; * int numberCount=0; * B:键盘录入一个字符串. * C:把字符串转换为字符数组. * D:遍历字符数组获取到每一个字符 * E:判断该字符是 * 大…
1. Character概述: public final class Character extends Object implements Serializable,Comparable<Character> Character类在对象中包装一个基本类型char的值.Character类型的对象包含类型为char的单个字段. 此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并且将字符从大写转换成小写,反之亦然. 2. Character的构造方法: Character(c…
1. 面试题: Integer  i = 1: i += 1: 做了哪些事情? (1)其中Integer i =1:做了自动装箱( 使用valueOf()方法,int ---> Integer ) (2)其中i +=1:先将Integer类型的 i 自动拆箱成 int(使用intValue()方法,Integer--->int ),完成加法运行之后的 i 再装箱成Integer类型. 2. 面试题: 观察下面程序,判断输出写出结果: package cn.itcast_06; /* * 看程序…
1. JDK1.5以后,简化了定义方式. (1)Integer  x = new  Integer(4):可以直接写成如下:         Integer  x = 4 ://自动装箱,通过valueOf方法. 备注:valueOf方法 (int --->  Integer) static Integer valueOf(int i) Returns a Integer instance for the specified integer value. static Integer value…
1. Integer类概述 (1)Integer类在对象中包装了一个基本类型 int 的值,Integer类型的对象包含一个int类型的字段. (2)该类提供了多个方法,能在int类型和String类型之间互相转换,还提供了处理int类型时候非常有用的其他一些常量和方法. 2. Integer的构造方法 (1)public Integer(int value): (2)public Integer(String s): 3. Integer类的案例 package cn.itcast_02; /…
转载:http://blog.csdn.net/weitry/article/details/52964509 JAVA基础系列规划: JAVA基础(1)——基本概念 JAVA基础(2)——数据类型 JAVA基础(3)——容器(1)——常用容器分类 JAVA基础(4)——容器(2)——普通容器 JAVA基础(5)——并发(1)——总体认识 JAVA基础(6)——并发(2)——原子 JAVA基础(7)——并发(3)——锁机制 JAVA基础(8)——并发(4)——线程池 JAVA基础(9)——容器(…
转载:http://blog.csdn.net/weitry/article/details/52964948 JAVA基础系列规划: JAVA基础(1)——基本概念 JAVA基础(2)——数据类型 JAVA基础(3)——容器(1)——常用容器分类 JAVA基础(4)——容器(2)——普通容器 JAVA基础(5)——并发(1)——总体认识 JAVA基础(6)——并发(2)——原子 JAVA基础(7)——并发(3)——锁机制 JAVA基础(8)——并发(4)——线程池 JAVA基础(9)——容器(…
泛型的术语 <>: 念做typeof List<E>: E称为类型参数变量 ArrayList<Integer>: Integer称为实际类型参数 ArrayList<Integer>: 整个ArrayList<Integer>称为参数化类型(对应着java.lang.reflect.ParameterizedType接口) 泛型反射相关API Type[] getGenericInterfaces():获得当前类实现的泛型接口(参数化类型) 举…
引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 Class<?>.通过在反射中使用泛型,可以避免使用反射生成的对象需要强制类型转换. 泛型作用对比: 如下示例没有使用泛型时,编译不报错,运行时报错强制转换异常 public class HasNoFanxin { public static Object newInstance(String cl…
这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债 这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲课,但老师讲的挺好,不过由于数据结构欠缺课听的有点烧脑,都是数据结构欠下的债 这学期的新课——英语口语,虽外教老师风骚逗趣浪荡不羁爱自由,但我辈词汇量欠缺,表明淡定说yeah,但心中一万匹草泥马策马奔腾,都是英语欠下的债 1.泛型类 实体类(容器类),经常重用的类,下面是一个没有用泛型的实体类: p…
黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样.由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到…