thinking in java编程学习笔记
文章平均质量分 61
cunyan
这个作者很懒,什么都没留下…
展开
-
泛型讨论
简单泛型 泛型最广泛的应用是在,容器类,也是容器的出现促使泛型的出现。,容器就是存放要使用对象的地方,说起来能存放对象的地方,数组也能,但是和数组比起来,泛型更灵活,具备更多不同的功能。一个简单的能保存一个对象例class Automobile{ public class Hold1{ private Automobile...原创 2010-09-02 19:37:33 · 82 阅读 · 0 评论 -
数组1
在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式,数组就是一个简单的线性序列,这使得元素访问非常迅速,但是带来的代价是数组对象的大小被固定。并且在其生命周期中不可改变,当然可通过使用ArrayList,它可以通过创建一个新的实例,然后把旧实例复制中所有 的引用移到新实例中。,从而实现更多空间的自动分配,,但是这种弹性需要开销的,因此,ArrayList的效率比数组的效率低的多。...原创 2010-09-04 18:29:25 · 67 阅读 · 0 评论 -
泛型讨论------危害的解决2
擦除失去了在泛型代码中执行某些操作的能力,任何在运行时需要知道确切类型信息的操作都将无法工作,看下面的例子: public class Eras<T>{ public static void main(String[] args){ if(ages instanceof T){}//出错 T var = new T(); //出错 ...原创 2010-09-03 20:33:50 · 103 阅读 · 0 评论 -
泛型讨论------危害的解决
泛型的危害不是一个语言特性,我们必须明确这一点,而在在运行时 例如在List<T>这样的类型在运行时都替换成List,而普通的类型变量在未指定边界的情况下都将替换成Object类型 替换的代价是显而易见的,即在运行时不能显示的引用运行的操作,例如转型,instanceof和new表达式。因为所有关于参数类型的信息都被丢失了。当我们创建了Foot<Cat&...原创 2010-09-03 19:41:06 · 100 阅读 · 0 评论 -
泛型讨论------危害
在泛型代码内部,无法获得任何有关泛型参数类型的信息。 例如: public class TypeValue{ public static void main(String[] args){ Class c1 = new ArrayList<String>().getClass(); Class c2 = new ArrayList<...原创 2010-09-03 19:24:24 · 104 阅读 · 0 评论 -
泛型讨论------利用泛型求交集并集等数学知识
一个实用的Set例子 public class Sets{ public static <T> Set<T> union<Set<T> a ,Set<T> b){ Set<T> result = new HashSet<T>(a); result.addAll(b); retu...原创 2010-09-02 21:18:47 · 112 阅读 · 0 评论 -
泛型讨论------一个更通用的对象生成器Generator
下面的例子可以为任何类构造一个对象。 public interface Generator<T> { T next(); }public class BasicGenerator<T> implements Generator<T> { private Class<T> type; public BasicGener...原创 2010-09-02 20:57:54 · 133 阅读 · 0 评论 -
泛型讨论------可变参数与泛型方法
泛型方法与可变参数列表能够很好的共存。 看下面的例子 public class GenericVarargs{ public static <T> List<T> makeList<T... args){ List<T> result = new ArrayList<T>(); for(T ite...原创 2010-09-02 20:47:36 · 111 阅读 · 0 评论 -
泛型讨论------类型参数推断
我们最大的遗憾也许就是使用了泛型以后,在程序中加入了更多的代码。下面看一个工具类,它包含各种各样的static方法,专门用来创建各种各样的容器对象。 public class New { public static <K,V> Map<K,V> map() { return new HashMap<K,V>(); } publ...原创 2010-09-02 20:40:47 · 175 阅读 · 0 评论 -
泛型讨论------泛型方法
泛型不经可以用在整个类上,同样也可以用在雷中包含参数化的方法,而这个方法所在的类可以是泛型,也可以不是泛型,也就是说,是否拥有泛型方法,与其所在的类是否是泛型没有关系。 一个基本的原则,优先使用泛型方法,然后才是泛型类,另外对于static方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。 泛型方法的定义: pub...原创 2010-09-02 20:29:41 · 103 阅读 · 0 评论 -
泛型讨论------泛型接口
泛型也可以用于接口,例如生成器,这是一种专门负责创意对象的类。实际上是工厂方法设计模式的一种应用。不同的是它不需要任何参数。 一般一个生成器只定义一个方法,该方法用于产生新的 对象。 例子: public interface Generator<T> { T next(); } 辅助类: public class Coffee { pri...原创 2010-09-02 20:20:11 · 105 阅读 · 0 评论 -
泛型讨论------堆栈类
使用泛型实现堆栈存储机制 例子: public class Stack<T>{ private static class Node<U>{ U item; Node<U> next; Node(){ item = null; next = null; } Node<U it...原创 2010-09-02 20:09:14 · 132 阅读 · 0 评论 -
泛型讨论------一个元组类库
仅一个方法调用就能返回多个对象,我们应该经常有这样的需求,可是return语句只允许返回单个对象。因此,解决的办法就是创意一个对象。就是我要说的元组,即:将一组对象直接打包存储与其中的一个单一对象,一个容器对象允许读取其中元素,但是不允许向其中存放新的对象。 看例子说问题: public class TwoTuple<A,B>{ public fina...原创 2010-09-02 19:49:28 · 99 阅读 · 0 评论 -
数组实用功能(Arrays)
在java.util类库中可以找到Arrays类,它有一套用于数组的static实用方法,其中有六个基本方法:equals()用于比较俩个数组是否相同(deepEquals()用于多维数组),fill用于填充测试数据,sort()用于对数组排序,binarySearch()用于在已经排序的数组中查找元素,toString()产生数组的String方法,hasCode()产生数组的散列吗,Array...原创 2010-09-04 18:52:21 · 144 阅读 · 0 评论