![](/img/trans.png)
[英]Building a project with Ant that includes ActionbarSherlock as a library project
[英]Java - get information into library project from project which includes this library
我正在開發一個庫,它需要來自項目的一些配置信息,其中包括這個庫。 我在想的是在我的庫中使用一些抽象方法並強制應用程序來實現這些方法。 我在尋找的是:
但是抽象方法在Java中不能是靜態的。 是否有一些解決方法來實現相同的功能。
靜態抽象方法毫無意義,因為抽象方法應該由擴展類(它是OO的一部分)實現,而static表示非實例方法(不是OO)。
但是我最近在J2EE項目中遇到了類似的問題,其中庫需要一些特定的配置,具體取決於使用它的項目。
我們決定做的是在項目中有一個具有特定名稱的配置文件,庫應該在加載后立即讀取。 如果找不到文件和/或所需的配置,則拋出異常(您可以創建自己的異常)。
我認為這樣你可以將庫的實現與使用它的項目分離。
public abstract class A {
protected static A INSTANCE;
public static String getURL() {
return INSTANCE.getURL();
}
protected abstract String getURL0();
}
class B extends A {
static {
INSTANCE = new B();
}
@Override
protected String getURL0() {
return "application-specific url";
}
}
根據您對問題的回答,我建議如下:
為類檢索屬性的接口定義如下:
interface LibaryDetails {
URL getURL();
String getName();
}
然后創建一種某種類型的Factory方法,使您的庫運行並執行它。 將您的代碼重構為主要代碼,以便從此處訪問它。 使用此方法將接口作為參數:
public class LibraryFactory{
public static void startLibrary(LibaryDetails details){
URL url = details.getURL();
String name = details.getName();
// start Library things
}
}
現在,您的庫只需要公開界面和靜態工廠。 您的應用程序只需將LibraryDetails接口的實現傳遞給工廠方法,您的庫就可以訪問這些信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.