如何在java.how中创建自己的标记接口以通知JVM将其视为特殊类?任何人都可以详细说明。
提前致谢....
答案 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中称为标记接口。
市场界面的示例是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类中实现的接口。
希望这会有所帮助。