java中的标记界面

时间:2010-10-19 06:08:55

标签: java jvm

如何在java.how中创建自己的标记接口以通知JVM将其视为特殊类?任何人都可以详细说明。

提前致谢....

2 个答案:

答案 0 :(得分:6)

你不能用JVM做那样的事情。

嗯,你可以,但你很少想要这样做。 JVM agents可以在JVM中“插入”。

但是没有使用标记接口 - 它们用于标记符合条件的类。例如,未在JVM中检查Serializable - ObjectOutputStream检查它。

因此,您可以创建public interface MyMarker {}并使用instanceof来验证给定的类是否在您自己的逻辑中实现它。

但是,从Java 1.5开始,首选方法是通过注释(即使使用jvm代理) -

public @interface MyMarker {..}

@MyMarker
public class MyClass { .. }

然后验证:

object.getClass().isAnnotationPresent(MyMarker.class);

答案 1 :(得分:0)

Java中的

标记接口无字段或方法的接口,或者简称为空接口在java中称为标记接口。

市场界面的示例是Serializable,Clonnable和Remote接口。

Marker接口用作标记将消息传递给java编译器,以便它可以向实现它的类添加特殊行为。

您可以创建我们自己的标记界面。

1) Cheque.java

grep "F_capture" `find -type f -name "*.c"`

2) BankDraft.java

public interface Cheque {
}

3)的 Payment.java

public interface BankDraft {
}

public class Payment implements BankDraft{ public void paymentByCheque() { System.out.println("Payment By Cheque");

}

4) MainClass.java

public void paymentByBankDraft() {


    System.out.println("Payment by Draft");


}
}

public class MainClass { public static void main(String[] args) {

Payment p = new Payment();

在上面的示例中,我创建了两个空接口 检查 BankDraft 。而Payment类实现了BankDraft接口。在MainClass类中,两个接口都表现为标记,MainClass的输出取决于您在Payment类中实现的接口。

希望这会有所帮助。