谨慎使用Marker Interface】的更多相关文章

之所以写这篇文章,源自于组内的一些技术讨论.实际上,Effective Java的Item 37已经详细地讨论了Marker Interface.但是从整个Item的角度来看,其对于Marker Interface所提供的一系列优点及特殊特性实际上是持肯定态度的.因此很多人,包括我的同事,都将该条目中的一些结论当作是准则来去执行,却忽略了得到这些结论时的前提,进而导致了一定程度的误用. 当然,我并不是在反对Effective Java的Item 37.说实话,我也没有这个资本.只是我个人在技术上…
先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法. 在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口. public interface Serializable { } 首先明确一点,Marker Interface(标记接口)决不是Java这门编程语言特有的,而是计算机科学中一种通用的设计理念. 我们看Wikipedia里对标记接口的定义. “The tag/ marker interface…
先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法.在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口. 首先明确一点,Marker Interface(标记接口)决不是Java这门编程语言特有的,而是计算机科学中一种通用的设计理念. 我们看Wikipedia里对标记接口的定义. "The tag/ marker interface pattern is a design pattern in comp…
Marker interface is an interface that contains no method declarations, but merely designates (or "marks") a class that implements the interface as having some property. Such as Serializable interface which indicates that the instance implements…
1. 抽象类: 为什么用抽象类: 一些 generic 的类本身并没有现实意义,所以不需要被实例化.比如动物,自然界没有动物这个物种,但却有无数的继承自动物的物种,那么动物本身可以是一个抽象类. 抽象类使用规则: 抽象类不可以被创建,不能有实例. 抽象类不可以是 final 的,因为 final 类不能被继承,那么抽象类就没任何意义了. 抽象类可以包含任意可见性的属性. 可以包含非抽象方法,但非抽象方法必须实现(必须有函数体). 可以不包含抽象方法. 抽象方法只能声明,不能实现. 抽象方法在子类…
放入接口中的任何域(成员变量)都自动是 static 和 final 的: 1. 包含抽象方法的常规接口 2. 全部是常量的 接口类中的方法和属性不要添加任何修饰符号(public 也不需要). 因为放入接口中的任何域(成员变量)都自动是 static 和 final 的:所以接口就成为了一种很便捷的用来创建常量组的工具: public interface Months { int JANUARY = 1, FEBURARY = 2, ..., DECEMBER = 12; } 在 Java S…
spring 3种装配方式: 支持混合配置:不管使用JavaConfig还是使用XML进行装配,通常都会创建一个根配置(root configuration), 这个配置会将两个或更多的装配类和/或XML文件组合起来,在根配置中启用组件扫描(通过<context:component-scan>或@ComponentScan) (1)xml 简单:<bean id="", class=""> <constractor-arg ref/va…
想成为更优秀,更高效程序员,请阅读此书.总计78个条目,每个对应一个规则. 第二章 创建和销毁对象 一,考虑用静态工厂方法代替构造器 二, 遇到多个构造器参数时要考虑用builder模式 /** * 1.直接传参阅读性差,2.JavaBean多线程下存在安全问题,3.builder适用于大于5个参数并且参数是可选得情况 建造者(builder) 模式 * @author fancy */ public class Person implements Serializable { private…
Spring中的常用注解 @Component 把普通 pojo 实例化到 Spring 容器中,相当于配置文件中的 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller.@Services等的时候),我们就可以使用@Component 来标注这个类 这个简单的注解表明该类会作为组件类,并告知 Spring 要为这个类创建 bean 用法:@Component("") 双引号内的内容为 bean 的 id ,不写的话默认为类名首字母小写 @Named 另外一…
第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə'rɪθmətɪk/ 算术/逻辑单元 hertz /hɝts/ 赫兹 core * 核心 bit * 位 byte * 字节 schema /'skimə/ 模式 RAM(Random-Access Memory) * 随机访问存储器 drive * 驱动器 hard disk * 硬盘 CD(co…