我想编写自己的标记接口,例如JVM 可以理解的java.io.Serializable
或。Cloneable
请建议我执行程序。
例如,我实现了一个名为的接口NotInheritable
,实现该接口的所有类都必须避免继承。
我想编写自己的标记接口,例如JVM 可以理解的java.io.Serializable
或。Cloneable
请建议我执行程序。
例如,我实现了一个名为的接口NotInheritable
,实现该接口的所有类都必须避免继承。
public interface MyMarkerInterface {}
public class MyMarkedClass implements MyMarkerInterface {}
然后,例如,您可以让方法仅采用MyMarkerInterface
实例:
public myMethod(MyMarkerInterface x) {}
或instanceof
在运行时检查。
是的,我们可以编写自己的标记异常......请参见以下示例......
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);
}
}
}
假设只有当标记 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
}
}
}
您可以编写自己的 Marker 接口,JVM 对此一无所知。
您必须通过使用来提供功能instanceof
。检查这个