Java中的标记接口

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Java中的标记接口 ,它是一个空的界面(没有字段或方法)。标记接口的例子是Serializable,Clonnable和Remote接口。所有这些接口都是空的接口。

public interface Serializable 
{
  // nothing here
}

在实时应用中使用的标记接口的例子:

    1. Cloneable接口:Cloneable接口存在于java.lang包中。Object类中有一个方法clone()。实现Cloneable接口的类表明clone()方法为该类的实例的field-for-field复制是合法的。
      在没有实现Cloneable接口的类的实例上调用Object的clone方法会导致引发异常CloneNotSupportedException。按照惯例,实现这个接口的类应该重写Object.clone()方法。

      // Java program to illustrate Cloneable interface
      import java.io.Serializable;
       
      // By implementing Cloneable interface
      // we make sure that instances of class A
      // can be cloned.
      class A implements Cloneable
      {
          int i;
          String s;
       
          // A class constructor
          public A(int i,String s)
          {
              this.i = i;
              this.s = s;
          }
       
          // Overriding clone() method
          // by simply calling Object class
          // clone() method.
          @Override
          protected Object clone()
          throws CloneNotSupportedException
          {
              return super.clone();
          }
      }
       
      public class Test
      {
          public static void main(String[] args)
              throws CloneNotSupportedException
          {
              A a = new A(20, "GeeksForGeeks");
       
              // cloning 'a' and holding
              // new cloned object reference in b
       
              // down-casting as clone() return type is Object
              A b = (A)a.clone();
       
              System.out.println(b.i);
              System.out.println(b.s);
          }
      }
      

      输出:

      20
      GeeksForGeeks
    2. 可序列化接口:java.io包中存在可序列化接口。它用于使对象有资格将其状态保存到文件中。这被称为序列化。
      没有实现这个接口的类将不会有任何状态序列化或反序列化。可序列化类的所有子类本身都是可序列化的。
    3. </li><li><pre>// Java program to illustrate Serializable interface
      import java.io.*;
       
      // By implementing Serializable interface
      // we make sure that state of instances of class A
      // can be saved in a file.
      class A implements Serializable
      {
          int i;
          String s;
       
          // A class constructor
          public A(int i,String s)
          {
              this.i = i;
              this.s = s;
          }
      }
       
      public class Test
      {
          public static void main(String[] args)
            throws IOException, ClassNotFoundException
          {
              A a = new A(20,"GeeksForGeeks");
       
              // Serializing 'a'
              FileOutputStream fos = new FileOutputStream("xyz.txt");
              ObjectOutputStream oos = new ObjectOutputStream(fos);
              oos.writeObject(a);
       
              // De-serializing 'a'
              FileInputStream fis = new FileInputStream("xyz.txt");
              ObjectInputStream ois = new ObjectInputStream(fis);
              A b = (A)ois.readObject();//down-casting object
       
              System.out.println(b.i+" "+b.s);
       
              // closing streams
              oos.close();
              ois.close();
          }
      }
      

      输出:

      20 GeeksForGeeks
    4. 远程接口:远程接口存在于java.rmi包中。远程对象是存储在一台机器上并从另一台机器访问的对象。所以,为了让一个对象成为一个远程对象,我们需要用Remote接口来标记它。这里,Remote接口用于标识可以从非本地虚拟机调用方法的接口。任何作为远程对象的对象都必须直接或间接实现此接口。RMI(远程方法调用)提供了一些远程对象实现可以扩展的便利类,这有助于远程对象的创建。

 

  •   本文标题:Java中的标记接口 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/3767.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读