随笔分类 -  Thinking in Java

摘要:【记忆贴】 1)foreach语句可以用于数据或者其他任何Iterable,但是并不意味着数组肯定也是一个Iterable,而任何自动包装也不会自动发生。 2)Map是将对象映射到其他对象的能力是一种解决编程问题的杀手锏。例如考虑一个程序,它将用来检查Java的Random类的随机性。理想吧状态下, 阅读全文
posted @ 2016-05-04 11:14 菜鸟奋斗史 阅读(810) 评论(0) 推荐(0)
摘要:创建内部类的典型的方式是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,以及此外围类的所有成员。下面的例子对局部内部类与匿名内部类的创建进行了比较。 具体代码实现: 运行结果: 在代码中,Counter返回的是序列中的下一个值。我们分别 阅读全文
posted @ 2016-04-25 11:11 菜鸟奋斗史 阅读(4531) 评论(1) 推荐(0)
摘要:因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,情况会变得有些复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化,而在导出类中不在存在可连接的默认对象。要解决这个问题,必须使用特殊的语法来说清它们之间的关联。 可以看到,InheritInner只是继承自内部类 阅读全文
posted @ 2016-04-25 10:12 菜鸟奋斗史 阅读(273) 评论(0) 推荐(0)
摘要:在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样。Java5.0放宽了这一限制,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。【注意】:"协变返回(covariant return)",仅在 阅读全文
posted @ 2016-04-18 14:48 菜鸟奋斗史 阅读(1093) 评论(0) 推荐(0)
摘要:构造器调用的层次结构带来了一个有趣的两难问题。如果在构造器内部调用正在构造的对象的某个动态绑定方法,此时会出现难以察觉的错误。我们知道,动态绑定的调用是在运行时才决定的,对象无法知道到底调用的是哪个类的方法。当我们在构造器中调用动态绑定的方法,就会用到该方法被覆盖之后的定义。但是这种调用的效果难以预 阅读全文
posted @ 2016-04-18 14:27 菜鸟奋斗史 阅读(730) 评论(0) 推荐(0)
摘要:参见java编程思想第四版:87-89页的内容 阅读全文
posted @ 2016-03-27 21:23 菜鸟奋斗史 阅读(1807) 评论(0) 推荐(0)