2014-04-30 55 views
1

我有一個實現兩個接口的類。其中一個接口在第二方jar中定義,另一個接口直接在我的代碼中定義。向下鑄造內部構件

現在我需要傳遞一個對象給第三方,它只實現我在我的代碼中定義的接口。我的疑問是,如果這隻會將我的對象向下轉換爲我定義的界面或甚至是向下轉換,那麼這個第三方仍然需要第二方庫,因爲內部我通過的類仍然保留對第二方jar中定義的接口的引用。

爲了形象化的情況下,一些代碼...

接口在我的代碼:

public interface MyInterface {} 

接口在secondparty.jar:

public interface SecondpartyInterface {} 

我的目標:

public MyObject implements MyInterface, SecondpartyInterface {} 

現在第三方調用我的代碼的方法應該是這樣的:

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

第三方具有僅包含MyInterface的my.jar。這項工作或第三方是否還需要第二方的罐子?

謝謝。

回答

0

那麼這取決於一件事真的,原碼是否存在如運行時的一個例子。如果你正在運行一個通用的主程序(比如說一些加載插件的API),那麼它可能不是問題。否則,你可以對你的庫進行修改,以便將它們加載到你的jar文件中,然後依賴關係可以遮蔽你或者從你的實例運行。

0

當您作爲jar導出時,如果您已經包含來自第二方jar的類,第三方將不需要secon party jar或其他!這將需要

here展示瞭如何創建一個罐子包括在Eclipse外部庫