【问题标题】:Downcasting class internals向下转型类内部
【发布时间】:2014-04-30 13:30:44
【问题描述】:

我有一个实现两个接口的类。其中一个接口在第二方 jar 中定义,另一个接口直接在我的代码中定义。

现在我需要将一个对象传递给仅实现我在代码中定义的接口的第三方。我怀疑这是否可以将我的对象向下转换为我定义的接口,甚至我向下转换,这个第三方仍然需要第二方库,因为在内部我传递的类仍然保留对第二方 jar 中定义的接口的引用.

为了可视化场景,一些代码......

我的代码中的接口:

public interface MyInterface {}

secondparty.jar 中的接口:

public interface SecondpartyInterface {}

我的对象:

public MyObject implements MyInterface, SecondpartyInterface {}

现在第三方在我的代码中调用了一个方法,应该是这样的:

private MyObject object;
public MyInterface getObject() {
    return (MyInterface)object;
}   

第三方的 my.jar 仅包含 MyInterface。这个工作还是第三方也需要第二方的罐子?

谢谢。

【问题讨论】:

    标签: java oop


    【解决方案1】:

    这实际上取决于一件事,原始代码在运行时是否存在。如果您正在运行一个通用的主程序(比如一些加载插件的 API),那么它可能不会成为问题。否则,您可以遮蔽您的库,以便将它们加载到您的 jarfile 中,然后依赖项将遮蔽您或从您的实例运行。

    【讨论】:

      【解决方案2】:

      当您导出为 jar 时,如果您已包含来自第二方 jar 的类,则第三方将不需要您的第二方 jar,否则是的!这将是必需的

      here 是一个示例,展示了如何使用 eclipse 中包含的外部库创建 jar

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多