获取不同类别的变量
问题描述:
所以我试图削减一些已编写的代码。我创建了一个单独的类来尝试这个。我有那个类正常工作,但是旧的使用现在在单独的类中的变量。我如何访问这些变量?不幸的是我不能分享所有的代码,但我可以给出我认为必要的小部分。感谢您的帮助获取不同类别的变量
这是从老班,我现在试图把这个变量:我试图把“装载机”过
// XComponentLoader loader = null;
fixture.execute(new OpenOfficeOpener());
component = loader.loadComponentFromURL("file:///"+System.getenv("BONDER_ROOT") + "/ControlledFiles/CommonFiles/"+spreadsheet, "_blank", 0, loadProps);
答
你可以写干将为成员你需要在外面看到。例如:
public class MyClass {
private int member1;
private String member2;
public int getMember1() {
return member1;
}
public String getMember2() {
return member2;
}
}
现在既member1
和member2
可从外部访问。
答
有几个问题的解决方案。我会建议的是在你的类中添加一个方法来将值返回给新程序,或者将它作为参数传递。 这在更高层次上的一个例子可能是这样的:
x = newClass.getValX()
答
这听起来像你正在寻找一个静态字段,但如果是这样的话,你几乎可以肯定是考虑当前的设计。
public class YourClass {
private static XComponentLoader loader;
public YourClass() {
YourClass.loader = new XComponentLoader();
}
}
,并从另一个类访问:
public YourOtherClass {
public void yourMethod() {
YourClass.loader ...
}
}
答
如果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);
// ...
}
答
我有你分割功能分为两大类,那么你可能需要有一个类实例化另一个。
如果您已将新代码放入B类,那么它可能看起来像这样。
public class A {
// Class B instance
B b = new B();
public void doSomething() {
b.loadComponentFromURL("someurl");
}
}
或者如果加载程序本身就是一个实例,可以这样调用它。
b.getLoader().loadComponentFromURL("someurl");
这取决于如何定义加载程序和其他类。提供有关其他类和加载器变量的更多细节。 – kosa 2012-02-08 15:56:44
你能详细说一下吗?我不太明白你的意思,但是从类“B”访问类“A”的字段是相当平凡的(通常通过调用getter)。那么问题在哪里? – Thomas 2012-02-08 15:57:06