受控接口实现

时间:2011-06-28 17:57:21

标签: java interface

在Serialization中,我们要序列化的类必须实现Serializable接口,否则抛出NotSerializableException。在Java的各种功能中还有许多其他示例。现在我只想知道如何在自定义类和接口中引入这种控件。我有一个名为Agent的界面。可以有许多不同类型的代理,所有代理都必须实现代理接口。我还有一个名为Node的类。节点创建代理。现在如何在这种情况下引入控制,这样一个代理总是很多地实现Agent接口,否则会抛出异常。我可能听起来有点模糊,但如果有人能提供我的总体想法,那么我可以在必要时提供进一步的细节。

2 个答案:

答案 0 :(得分:3)

如果您有一个必须接受代理的Node方法,则指定该参数必须是代理。

interface Node {
    void method(Agent agent); // must be an Agent.
    Agent returnAgent(); // must return an Agent.
}

序列化是一种特殊情况。这是因为并非所有可序列化的类型都是Serializable。内置类型如int []是可序列化的,但不实现Serializable。这种类型的检查不能由编译器完成,只能在运行时完成。

答案 1 :(得分:0)

您可以在Node创建代理之前检查代理是否实现了接口。

public class CheckForInterface
{
    public static void main(String[] args) throws ClassNotFoundException
    {
        Class cl = (Class)Class.forName("TestImpl");
        Class[] itfs = cl.getInterfaces();

        for(Class c : itfs)
        {
            System.out.println(c);
        }
    }
}

import java.io.Serializable;

public class TestImpl implements Serializable
{
    public TestImpl()
    {

    }
}

输出:interface java.io.Serializable