您的问题确实应该是 编译器 如何处理标记接口,而答案是: 与其他接口没有什么不同 。例如,假设我声明了一个新的标记接口
Foo:
public interface Foo {}
…然后声明一个
Bar实现的类
Foo:
public class Bar implements Foo { private final int i; public Bar(int i) { this.i = i; }}
我现在可以
Bar通过type的引用来引用的实例
Foo:
Foo foo = new Bar(5);
…,并(在运行时)检查对象是否实现
Foo:
if (o instanceof Foo) { System.err.println("It's a Foo!");}
后一种情况通常是使用标记接口的驱动程序。前一种情况几乎没有好处,因为没有可以调用的方法
Foo(无需先尝试向下转换)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)