前阵子弄到一个关于Java核心技术知识的文档,说要好好整理,现在已经整理完了。我这就来给大家一步步更新内容,先从Java基础知识开始吧!注:添加VX【MXM9809】获取高清大图和完整PDF,还有更多Java进阶视频资料!添加VX【MXM9809】获取高清完整大图 Java异常分类及处理 1、概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同...
java中的泛型采用了类型擦除的方法,但这种方法会存在一些问题。 下面举一个在方法重载时的问题,由于才有了类型擦除,导致两个源码看起来可以重载的方法无法重载(编译无法通过) 由于采用了类型擦除,使得两个方法内参数类型判断为相同。
Java泛型详解 定义出现背景专业术语 使用场景泛型类泛型接口泛型方法 类型参数标识符上界通配符下界通配符无界通配符 泛型边界底层原理局限性 定义 泛型可以用一句话来概括:类型参数化,即将类型看作一个参数。它的出现可以让我们不用预先去考虑我们需要什么类型的数据,而是在实际使用时将该类型作为一种参数传进去。核心概念就是告诉编译器想使用什么类型,然后编译器帮你处理一切细节。 其基本写法就是使用一对尖括号,中间包含...
泛型:一种未知的数据类型,当不知道使用什么数据类型的时候可以使用泛型。也可以看做是一个变量,用来接收数据。例如: E e :element 元素T t :type 类型 ArrayList集合在定义的时候,不知道集合中会存那些数据类型的数据,所以类型使用泛型E定义未知数据。 例如: public class ArrayList<E>(public boolean add(E e){)public E get(int index){} )ArrayList<String> list = new ArrayList<String>(); //创建集合...
关于Java 泛型的总结 /** * 泛型: * 1、class MyStack<T> 此时的<T>代表是一个占位符 表示当前类是一个泛型类 * 2、 this.elem = new T[10]; 不能实例化泛型类型的数组对象 * 3、 MyStack<Integer> myStack = new MyStack<>(); * MyStack<Integer> 这里指定当前类可以存放是数据类型 * new MyStack<Integer>(); * 4、泛型的意义: * a:可以自动进行类型的检查 * b:可以自动进行类型的转换 * 5、 MyStack<int> mySta...
? extends Type 表示Type的子类型(subtypes),Type也包含在内,被称为上界(upper bound) ? super Type表示Type的父类型(supertypes),Type也包含在内,被称为下界(lower bound) 有界的通配符相较于无界的,可以携带更多的信息.public static <T> void copy (List<? super T> dest, List<? extends T> src) {for (int i=0; i<src.size(); i++)dest.set(i,src.get(i));}为什么需要有界通配符? public static <T> void copy(List<T>dest,Li...
?通配符是表示所有类型,但是有些情况我们需要表示部分类型,特别是要表示一些有依赖关系的类型,就需要指定边界. ? exteds SuperType 中SuperType就是上界,表示该类是上界的子类 ? super SubType 中SubType就是下界,表示该类型是下界的父类 注意通配符(wildcard)只能有一个边界 参考: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#What%20is%20a%20wildcard%20bound?
除了基础类型,都可以做为通配符的边界 List<? extends String > List<? extends Comparable > List<? extends int[] > List<? extends Comparable<? super Long> > List<? extends Class<? extends Number> > List<? extends Enum<?> > 参考: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Which%20types%20are%20permitted%20as%20wildcard%20bounds?
Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。适用于多种数据类型执行相同的代码 泛型中的类型在使用时指定 泛型归根到底就是“模版”优点:使用泛型时,在实际使用之前类型就已经确定了,不需要强制类型转换。 泛型主要使用在集合中。 泛型的使用 泛型有三种...
Java泛型中的?指通配符,泛指所有类型。而<? extends T>指的是上界通配符,? super T指的是下界通配符。 1 为什么要用通配符和边界? 举个例子,我们假设有一个Cat类表示所有的猫科动物,那么显然加菲猫类Garfield是Cat的一个子类。如果我们有一个猫科动物的笼子List<Cat>,我们理所当然地认为这个笼子也可以关加菲猫。但是,下面这行代码却在编译期报错了。 List<Cat> cats = new ArrayList<Garfield>();所以,我们可以知道,就算...
前几次讲座,我们在程序里面看到了Generics,今天我们就来专门谈一谈。 先看Generics的作用:They were designed to extend Javas type system to allow “a type or method to operate on objects of various types while providing compile-time type safety”。这里明白地指明了Generics泛型的两个用处,一是允许一个类或者方法操纵不同类型的对象,二是提供编译时类型安全。这是在Java5里面引进来的。这是Java设计团队与时皆进...
基本概念 通常情况下集合中可以存放不同类型的对象,是因为将所有对象都看做Object类型放入的,因此从集合中取出元素时也是Object类型,为了表达该元素真实的数据类型,则需要强制类型转换,而强制类型转换可能会引发类型转换异常。为了避免上述错误的发生,从Java5开始增加泛型机制,也就是在集合名称的右侧使用<数据类型>的方式来明确要求该集合中可以存放的元素类型,若放入其它类型的元素则编译报错。泛型只在编译时期有效,在...
主要内容Collection集合迭代器增强for泛型教学目标能够说出集合与数组的区别说出Collection集合的常用功能能够使用迭代器对集合进行取元素能够说出集合的使用细节能够使用集合存储自定义类型能够使用foreach循环遍历集合能够使用泛型定义集合对象能够理解泛型上下限能够阐述泛型通配符的作用第一章 Collection集合1.1 集合概述在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢?集合:集合是java中提供的一种...
假设类X有一个getObject方法,返回一个Object类型的数据: public class X {public Object getObject(...){...return obj;} }使用X的代码如下: X x = ...; A a = (A) x.getObject(...); B b = (B) x.getObject(...); C c = (C) x.getObject(...);可以看到,在程序中出现了很多强制类型转换,看起来很不美观。那么如何消除这些类型转换呢? 可以将X的getObject方法改写成下面这样: public class X {public <T> T Object getObject...
从Java SE5开始有了泛型的概念,泛型实现了参数化类型的概念。泛型的核心概念就是告诉编译器想使用什么类型,一般可以认为泛型与其他类型差不多,只是带有一个类型参数罢了。泛型的类型参数可以有多个,以逗号分隔,同时也可以使用extends来限定类型,extends为边界符,与继承时使用的extends意义不同,多个边界使用&符号连接。 1、简单的泛型public class ClassHolder<T> {public List<T> getClassList(){return new ArrayList<T...