博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中的标记接口
阅读量:6871 次
发布时间:2019-06-26

本文共 1072 字,大约阅读时间需要 3 分钟。

hot3.png

    JAVA的标记接口(tagging interface 或者 marker interface),是一类没有定义接口方法的接口。没有接口方法意味着实现该接口的类无需实现接口方法,这种接口仅仅是作为一种标记,一般用来给Java虚拟机在运行时进行相关的安全性检查。

    标记接口是Java的语言特性,典型的标记接口有:Clonable,Serializable,RandomAccess,Remote等。

    (1)Clonable标记接口:当我们需要copy一个对象的时候,我们一般是直接调用对象的clone()方法。我们知道Java的顶级类Object定义了一个 protected Object clone()方法,用户不能通过对象直接调用这个方法。因此,通常的编码方案是在自定义的类中重写这个clone()方法,并修改成public访问权限:

       

        public Object clone() throws CloneNotSupportedException {

            super.clone();

            // 其他字段的拷贝

        }

        Object类将clone()方法声明为protected是考虑到对象组合中的拷贝问题:Object类只能实现对象的浅拷贝,需要用户来实现继承子对象的深拷贝。Clonable标记接口的作用是通知虚拟机,用户已经处理好对象深拷贝的事情,虚拟机检查通过。如果没有申明Clonable接口,但是调用了clone()方法,虚拟机会抛出异常。

    (2)RandomAccess标记接口:这个通常用来标记集合对象可以随机访问。我们知道,对于for语句和foreach语句是有区别的,for语句需要对象具备随机访问的特性,foreach语句则只需要对象实现Iterator接口。如果一个集合对象声明了RandomAccess接口,那么我们就可以根据如下语句判断,使用for语句来随机访问集合对象,进而优化代码:

            if (anObject instanceof RandomAccess) { // 随机访问anObject }

        (3)Serializable标记接口:这个接口用来标识该类对象可以被序列化。如果没有声明该接口,类对象在被序列化和反序列化过程中,JVM虚拟机抛出异常。

        (4)Remote标记接口:Remote标记接口主要用来通知JAVA虚拟机该类所包含的方法可以从非本地虚拟机上调用。如果不声明该接口,进行远程调用的时候,JVM抛出异常。

转载于:https://my.oschina.net/yepanl/blog/1584920

你可能感兴趣的文章
Linux下清除磁盘分区及残留raid信息
查看>>
如何确认第二个sskgslcas就是获得Buffer Pin锁
查看>>
在Eclipse中配置tomcat
查看>>
Python基础
查看>>
springboot加载顺序
查看>>
python chapter 学习之序列
查看>>
我的友情链接
查看>>
Linux下如何知道自己外网的IP
查看>>
GlusterFS的基础应用
查看>>
DRBD+Heartbeat
查看>>
Ubuntu下vsftpd安装和配置
查看>>
IT运维之Linux服务器监控方案
查看>>
ORA-09925: Unable to create audit trail file Linux-x86_64
查看>>
安全存储专家usse
查看>>
MySQL数值类型
查看>>
TCP、UDP下的套接字编程
查看>>
jboss7-的默认系统日志
查看>>
python中的多进程和多线程
查看>>
如何跳出嵌套语句之return
查看>>
pycharm使用
查看>>