摘要:
1.下载cas server的源码包(我使用的是cas-server-3.5.2.1-release.zip) 2.解压压缩包到某个目录下,找到cas-server-3.5.2.1-release.zip\cas-server-3.5.2.1\modules下的cas-server-webapp-3 阅读全文
摘要:
考虑第6条的简单堆栈实现: 将该类泛型化可以提高类型的安全性,方便客户端使用(无需显式强制转换类型) 首先用类型参数替换所有的Object类型: 由于不能创建不可具体化类型的数组,所有有错误(new E[DEFAULT)INITIAL_CAP]是不允许的) 解决方法: 1.创建一个Object数组, 阅读全文
摘要:
数组与泛型相比,有两个重要的不同点。数组是协变的(如果Sub是Super的子类型,那么数组类型Sub[]是Super[]的子类型),相反,泛型是不可变得,对于任意两个不同的类型T1和T2,List<T1>和List<T2>没有子类型或超类型的关系。 一段代码: 会有一条警告,编译器无法再编译时知道E 阅读全文
摘要:
用泛型编程时,会遇到许多编译器警告:非受检强制转化警告(unchecked cast warning)、非受检方法调用警告、非受检普通数组创建警告、非受检转换警告。 许多非受检警告很容易消除,如: 编译器提醒你 HashSet is a raw type. References to generic 阅读全文
摘要:
Java 1.5发行版本增加了泛型。在没有泛型之前,从集合中读取到的每一个对象都必须进行显式转换,一旦插入了类型错误的对象,在运行时出错才被发现。有了泛型之后,就可以告诉编译器每个集合中接受哪些对象类型,编译器会自动进行转换,并在编译时告知是否插入类型错误的对象。 泛型指声明中具有一个或者多个类型参 阅读全文
摘要:
嵌套类指被定义在一个类的内部的类。嵌套类存在的目的应该只是为它的外围类提供服务。如果嵌套类将来可能用于其他环境,它应该是顶层类。 嵌套类有四种:静态成员类,非静态成员类,匿名类,局部类。 静态成员类的常见用法是作为公有的辅助类,仅当与外部类一起使用才有意义,考虑一个枚举,它描述计算器支持的各种操作, 阅读全文
摘要:
C语言标准库中的qsort函数要求用一个指向comparator函数的指针作为参数,它用这个函数来比较待排序的元素。比较器有两个参数,都是指向元素的指针。通过传递不同的比较器函数,可以获得不同的排列顺序,这是策略模式的一个例子。比较器函数代表一种为元素排序的策略。 java.util表中有一个Com 阅读全文
摘要:
标签类值带有两种甚至多种风格的实例的类,如一个表示圆或者矩形的类: 这种标签类过于冗长,容易出错,并且效率低下。 在Figure类中,只有area方法是矩形或者圆都有的,将它放在类层次的根。 类层次可以反映正方形是一种特殊的矩形: 上述的域是被直接访问的,而不是通过访问方法,应该使用访问方法。 标签 阅读全文
摘要:
当类实现接口,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明客户端可以对这个类的实例实施某些动作,为了其他任何目的而定义接口是不恰当的。 有一种常量接口,它不包含任何方法,只包含静态的final域,每个域导出一个常量,使用这些常量的类实现这个接口,以避免用类名来修饰常量名: 这是对 阅读全文
摘要:
Java提供两种机制,可以用来定义允许多个实现的类型:接口和抽象类。在Java 1.8之前,这两种机制最大的区别是,抽象类允许包含某些方法的实现,但是接口则不允许(这种情况在Java 1.8发布后被改变,接口可以用default修饰符来声明一个有实现的方法。 接口的好处: 1.现有的类可以很容易被更 阅读全文