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