2012-02-08 70 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");