java中的标记接口

    在java中Serializable,Cloneable,RandomAccess这些接口的内部没有任何方法,但是实现了这些接口以后便可以序列化,拷贝以及判断集合是否能快速访问。原因是应为这些接口都是标记接口,它们的功能就是标记实现给接口的类拥有对应的功能。

    实现标记接口以后就相当于告诉JVM虚拟机实现该接口的类具有了相应的功能。

java.util.RandomAccess接口

   List 实现所使用的标记接口, 用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。

    将操作随机访问列表的最佳算法(如 ArrayList )应用到连续访问列表(如 LinkedList )时,可产生二次项的行为。如果将某个算法应用到连续访问列表,那么在应用可能提供较差性能的算法。(随机访问列表)如ArrayList 要实现此接口,Sequence Access List(顺序访问列表)如LinkedList不要实现,因为两者高效遍历算法不同。

    实现了RandomAccess接口的list最好不要使用迭代器遍历,因为这样遍历的效果会差一些,而像LinkedList这些没有实现RandomAccess接口的连续访问列表最好使用迭代器遍历,在选择遍历方式之前可以根据instanceof判断list是否实现了RandomAccess。

if (list instanceof RandomAccess) {
            for(int m = 0,length = list.size(); m < length; m++){}
        }else{
            Iterator it = list.iterator();
            while(it.hasNext()){
                it.next();
            }
        }

 

java.lang.Cloneable接口

表明Object.clone()方法可以合法地对该类实例进行按字段复制.实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。

 

java.io.Serializable接口

未实现此接口的类将无法使其任何状态序列化或反序列化.为保证 serialVersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值。

 

java.rmi.Remote接口                            

Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口.任何远程对象都必须直接或间接实现此接口。只有在“远程接口”(扩展 java.rmi.Remote 的接口)中指定的这些方法才可远程使用。

转载于:https://my.oschina.net/zicheng/blog/1623982

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值