如何用Eclipse获取Java中2个接口的公共子类?

时间:2008-10-29 07:30:13

标签: java eclipse

实际上我试图找到一个InputStream的子类,它也是Serializable。我认为那不存在。由于两个接口都有许多子类,因此很难找到两个子类的子类。

到目前为止,我还没有找到任何可以帮助我在Eclipse中搜索的东西。任何想法?

编辑:我现在明白序列化一个流并不是真的应该做的事情。但问题的实质是:如何找到两个接口的公共子类。

5 个答案:

答案 0 :(得分:1)

序列化InputStream不是一个非常可行的解决方案。为了说明这一点,假设您有一个来自套接字的InputStream并且您将其序列化。在反序列化之前,套接字已关闭。现在,当你实际反序列化它时,资源已经消失,你手中有一个令人讨厌的例外。

如果需要序列化资源,您应该做的是序列化它的位置或如何获取它。在套接字示例中:主机名和端口,用于文件:文件路径等

答案 1 :(得分:1)

在eclipse中,按键快捷键Ctrl + T打开类型层次结构。您甚至可以在基类或接口上使用此功能,并获得包含此类型的所有实现/子类的列表。

如果您这样做两次并比较两个结果,您将找到您的课程。但是在例如可序列化和可比较的交集可能会变得非常巨大......

答案 2 :(得分:1)

不要被冒犯,但听起来像你试图解决错误的问题。你真的试图实现什么?

答案 3 :(得分:0)

我不确定你能否实际做到这一点(或者至少以一种简单的方式......)。

无论如何,我喜欢“Open Implementation”插件,它允许您右键单击类或接口(或类/接口本身)的方法,并询问此方法的所有已知实现/接口/类。 这个插件可以帮助你(你现在可以搜索InputStream的所有实现

答案 4 :(得分:0)

您可以使用Reflections库以编程方式获取一组子类型。两组的交叉将是你的答案。

Set<Class<? extends Serializable>> subTypes = 
           reflections.getSubTypesOf(Serializable.class);

但是,这不是Eclipse特定的解决方案。