书
wenchi2018
5000一章
先配置后插件然后搭建过程中的异常跟着快捷键接着知识 最后网址
大分类异常拆开
分类要明确 不能糅合 以后拆麻烦
左上右下
头条号:https://www.toutiao.com/i6827822832097952267/
个人小程序:sql小工具
展开
-
Thinking In Java Part13(无界通配符,确切泛型参数,超类型通配符 之间区别。用上界通配符确定返回类型,用下界通配符确定返回类型)
1、无界通配符 无界通配符<?>看起来意味着“任何事物”。 public class UnboundedWildCards1 { static List list1; static List<?> list2; static List<? extends Object> list3; static void assign1(List list) { list1 = list; list2 =原创 2020-06-19 17:02:33 · 224 阅读 · 0 评论 -
Thinking In Java Part12(通配符、超类型通配符)
1、通配符 可以向导出类型的数组赋予基类型的数组引用 class Fruit{} class Apple extends Fruit{} class Jonathan extends Apple{} class Orange extends Fruit{} public class CovariantArrays { public static void main(String[] args) { Fruit[] fruit = new Apple[10];原创 2020-06-19 15:01:23 · 232 阅读 · 0 评论 -
Thinking In Java Part11(泛型数组、通过extends限制边界)
1、泛型数组 因为有了擦除,数组运行时的类型只能是Object[],如果我们立即将其转型为T[],那么在编译器该数组的实际类型就将丢失,而编译器可能会错过某些潜在的错误检查,因此,最好在集合内部使用Object[],然后当使用数组元素时,添加一个对T的转型。 public class GenericArray2<T> { private Object[] array; public GenericArray2(int sz) { this.array原创 2020-06-16 16:52:31 · 183 阅读 · 0 评论 -
Thinking In Java Part10(泛型擦除)
1、泛型擦除 ArrayList<String> ArrayList<Integer> 我们可能认为类型不同,但其实它们是相同的 ArrayList<Integer> arrays= new ArrayList<>(); ArrayList<String> arrays1= new ArrayList<>(); arrays.add(2); arrays1.ad原创 2020-06-16 10:41:48 · 160 阅读 · 0 评论 -
Thinking In Java Part09(泛型类、泛型方法)
1、接口与类型信息 interface关键字的一种重要目标就是允许程序员隔离构件,进而降低耦合性。 javap -private C 可以反编译显示出这个类的所有方法,无论private还是匿名 2、泛型 实现了参数化类型的概念,使代码可以应用于多种类型。术语的意思为:“适用于许多许多的类型”。最初的目的是希望类或方法能够具备最广泛的表达能力,通过解耦类或方法与所使用的类型之间的约束。 泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。 核心概念:告诉编译器想原创 2020-06-09 16:17:36 · 174 阅读 · 0 评论 -
Thinking In Java Part08(newInstance、instanceof、动态代理)
1、newInstance Class的newInstance()是实现“虚拟构造器”的一种途径,虚拟构造器允许你声明:我不知道你的确切类型,但是无论如何要正确地创建你自己。使用newInstance()来创建的类,必须带有默认的构造器。 2、类字面常量 一种为Class.forname("xxx"),Java还提供了另一种方法生成对Class对象的引用,使用类字面常量。即Cookie.class 当使用".class"来创建对Class对象的引用时,不会自动地初始化该Class对象。为了使用类而做的原创 2020-05-21 17:00:34 · 169 阅读 · 0 评论 -
ManningSpringInAction5Part01 35
1、基于java的容器配置优于基于XML的容器配置 类型安全并有高可重构性原创 2020-04-30 11:11:14 · 165 阅读 · 0 评论 -
Thinking In Java Part07(容器、简单的容器分类、类加载器)
1、Collection和Iterator Collection是描述所有序列容器的共性的根接口,它可能会被认为是一个“附属接口”,即因为要表示其他若干个接口的共性而出现的接口。AbstractCollection是Collection的默认实现。 使用接口描述的一个理由是它可以使我们能够创建更通用的代码,通过针对接口而非具体实现来编写代码,我们的代码可以应用于更多的对象类型。 2、适配器方法...原创 2020-04-17 14:41:30 · 150 阅读 · 0 评论 -
Thinking In Java Part06(内部类/容器)
1、为什么需要内部类 一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以认为内部类提供了某种进入其外围类的窗口。 如果只需要一个对接口的引用,那么直接通过外围类实现那个接口。 那么内部类实现一个接口和外围类实现这个接口有什么区别呢? 后者不是总能享受到接口带来的方便,又是需要用到接口的实现。所以。使用内部类的最重要的原因: 每个内部类都能独立...原创 2020-04-16 11:07:35 · 179 阅读 · 0 评论 -
Thinking In Java Part05(抽象)
1、抽象类和抽象方法 如果我们只提供接口,但没有具体的实现内容,创建这个对象是没有什么意义的,而且我们可能还想要阻止使用者这么做。通过让这个对象的所有方法报错可以实现阻止创建这个对象的目的。但是这样做会将错误信息延迟到运行时才获得,并且要在客户端进行可靠、详尽的测试。所以最好在编译时捕获这些问题。也就是尽可能不创建无内容的接口或者说对象。 谓词,Java提供了一个叫做抽象方法的机制,这种方法是...原创 2020-03-31 11:25:12 · 132 阅读 · 0 评论 -
Thinking In Java Part04(final/多态)
1、空白final Java允许生成“空白final”,所谓空白final是指被声明为final但又未给定初值的域。无论什么 情况,编译器都确保空白final在使用前被初始化。但是,空白final在关键字final的使用上提供了更大的灵活性,为此,一个类中的final域可以做到根据对象而有所不同,却又保持其恒大不变的特性。 2、final方法 使用final方法的原因有2个。第一个原因是把方法...原创 2020-03-30 14:22:00 · 201 阅读 · 0 评论 -
Thinking In Java Part03(对象)
1、存储位置 1.1、寄存器:最快的存储区,因为它位于不同于其他存储区的地方——处理器内部,但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象(另一方面,C和C++允许向编译器建议寄存器的分配方式) 1.2、堆栈。位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向...原创 2020-03-12 13:56:44 · 204 阅读 · 0 评论 -
Thinking In Java Part02(继承)
在这里插入代码片原创 2020-01-21 10:12:22 · 169 阅读 · 0 评论 -
Thinking In Java Part01(抽象)
抽象过程 1、所有变成语言都提供抽象机制,人们所能解决的问题的复杂性取决与抽象的类型和之类。汇编语言是对底层机器的轻微抽象。命令式语言(Fortran、Basic、C等)都是对汇编语言的抽象。他们所作的主要抽象仍邀请在解决问题时要基于计算机的结构,而不是基于所要解决问题的结构来考虑。 面向对象方式通过向程序员提供表示问题空间中的元素的工具更进一步,使得我们不会受限于任何特定类型的问题。我们将问题...原创 2020-01-13 17:22:45 · 201 阅读 · 0 评论 -
JavaEffective知识Part01
1、静态工厂方法与构造器不同 优势: 1.1、有名称 1.2、不必在每次调用它们的时候都创建一个新对象 1.3、可以返回原返回类型的任何子类型的对象 1.4、所返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值 1.5、方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在 缺点: 1.1、类如果不含共有的或者受保护的构造器,就不能被子类化...原创 2019-12-09 16:01:26 · 149 阅读 · 0 评论