7

JVM が理解できる、java.io.Serializableまたはのような独自のマーカー インターフェイスを作成したいと考えています。Cloneable実装手順を教えてください。

たとえば、というインターフェイスを実装しましたNotInheritableが、このインターフェイスを実装するすべてのクラスは継承を回避する必要があります。

4

5 に答える 5

3
public interface MyMarkerInterface {}

public class MyMarkedClass implements MyMarkerInterface {}

MyMarkerInterface次に、たとえば、インスタンスのみを取得するメソッドを作成できます。

public myMethod(MyMarkerInterface x) {}

またはinstanceof実行時に確認してください。

于 2012-05-11T12:52:52.517 に答える
2

はい、独自のマーカー例外を作成できます....次の例を参照してください....

interface Marker{   
}

class MyException extends Exception {   

    public MyException(String s){
        super(s);
    }
}

class A implements Marker {

   void m1() throws MyException{        
     if((this instanceof Marker)){
         System.out.println("successfull");
     }
     else {
         throw new MyException("Unsuccessful  class must implement interface Marker ");
     }      
}   
}

/* Class B has not implemented Maker interface .
 * will not work & print unsuccessful Must implement interface Marker
*/
class B extends A  {    


}

// Class C has not implemented Maker interface . Will work & print successful

public class C  extends A implements Marker   
 { // if this class will not implement Marker, throw exception
     public static void main(String[] args)  {
     C a= new C();
     B b = new B();

     try {
        a.m1(); // Calling m1() and will print
        b.m1();
     } catch (MyException e) {

        System.out.println(e);
    }

}
}

出力

于 2014-03-02T09:26:14.903 に答える
1

マーカー MyInterface をそこでマークする必要がある場合にのみ myMethod を呼び出す必要があるとします。

interface MyInterface{}

class MyException extends RuntimeException{

    public MyException(){}
    public MyException(String message){
        super(message);
    }
}

class MyClass implements MyInterface{
    public void myMethod(){
        if(!(this instanceOf MyInterface)){
            throw new MyException();
        }else{
            // DO YOUR WORK
        }
    }
}
于 2013-05-26T13:38:10.177 に答える
-3

マーカー インターフェイスは空のインターフェイスです。これは、インターフェイスを作成するだけでよく、その中にメソッドを作成しないことを意味します。ここで見つけることができるより良い説明。

このアプローチは、型に対して同様の機能を持つ注釈に置き換えることができます。もっと

于 2012-05-11T12:54:02.830 に答える