2012-02-08 85 views
1

所以我試圖削減一些已編寫的代碼。我創建了一個單獨的類來嘗試這個。我有那個類正常工作,但是舊的使用現在在單獨的類中的變量。我如何訪問這些變量?不幸的是我不能分享所有的代碼,但我可以給出我認爲必要的小部分。感謝您的幫助獲取不同類別的變量

這是從老班,我現在試圖把這個變量:我試圖把「裝載機」過

// XComponentLoader loader = null; 

fixture.execute(new OpenOfficeOpener()); 
component = loader.loadComponentFromURL("file:///"+System.getenv("BONDER_ROOT") + "/ControlledFiles/CommonFiles/"+spreadsheet, "_blank", 0, loadProps); 
+0

這取決於如何定義加載程序和其他類。提供有關其他類和加載器變量的更多細節。 – kosa 2012-02-08 15:56:44

+0

你能詳細說一下嗎?我不太明白你的意思,但是從類「B」訪問類「A」的字段是相當平凡的(通常通過調用getter)。那麼問題在哪裏? – Thomas 2012-02-08 15:57:06

回答

0

你可以寫干將爲成員你需要在外面看到。例如:

public class MyClass { 
    private int member1; 
    private String member2; 

    public int getMember1() { 
     return member1; 
    } 

    public String getMember2() { 
     return member2; 
    } 
} 

現在既member1member2可從外部訪問。

0

有幾個問題的解決方案。我會建議的是在你的類中添加一個方法來將值返回給新程序,或者將它作爲參數傳遞。 這在更高層次上的一個例子可能是這樣的:

x = newClass.getValX()

0

這聽起來像你正在尋找一個靜態字段,但如果是這樣的話,你幾乎可以肯定是考慮當前的設計。

public class YourClass { 

    private static XComponentLoader loader; 

    public YourClass() { 
     YourClass.loader = new XComponentLoader(); 
    } 


} 

,並從另一個類訪問:

public YourOtherClass { 
    public void yourMethod() { 
     YourClass.loader ... 
    } 
} 
0

如果loader是靜態的,不是做這樣的事情:

component = TheOtherClass.loader.loadComponentFromURL(... 

否則,你的新類需要一個實例的引用另一類。你可以用構造函數傳遞:

public class NewClass { 

    private OldClass oldClass = null; 
    public NewClass(OldClass oldClass) { 
     this.oldClass = oldClass; 
    } 

    // ... 

     fixture.execute(new OpenOfficeOpener()); 
     // assuming, loader is a public field on OldClass. 
     // a getter (getLoader()) is preferred 
     component = oldClass.loader.loadComponentFromURL("file:///"+System.getenv("BONDER_ROOT") + "/ControlledFiles/CommonFiles/"+spreadsheet, "_blank", 0, loadProps); 

    // ... 
} 
0

我有你分割功能分爲兩大類,那麼你可能需要有一個類實例化另一個。

如果您已將新代碼放入B類,那麼它可能看起來像這樣。

public class A { 
    // Class B instance 
    B b = new B(); 

    public void doSomething() { 
     b.loadComponentFromURL("someurl"); 
    } 
} 

或者如果加載程序本身就是一個實例,可以這樣調用它。

b.getLoader().loadComponentFromURL("someurl");