所以我试图削减一些已编写的代码。我创建了一个单独的类来尝试这个。我让那个类正常工作,但旧的类使用现在在单独的类中的变量。我如何访问这些变量?不幸的是我不能为此分享所有代码,但我可以发出我认为必要的小块。谢谢你的帮助
这是来自我现在试图将变量带到的旧类:我正试图将“loader”带到
// XComponentLoader loader = null;
fixture.execute(new OpenOfficeOpener());
component = loader.loadComponentFromURL("file:///"+System.getenv("BONDER_ROOT") + "/ControlledFiles/CommonFiles/"+spreadsheet, "_blank", 0, loadProps);
答案 0 :(得分:0)
您可以为需要在外面看到的成员编写getter。例如:
public class MyClass {
private int member1;
private String member2;
public int getMember1() {
return member1;
}
public String getMember2() {
return member2;
}
}
现在可以从外部访问member1
和member2
。
答案 1 :(得分:0)
您的问题有几种解决方案。我建议在类中添加一个方法,将值返回给新程序,或将其作为参数传递。 更高级别的示例可能如下所示:
x = newClass.getValX()
答案 2 :(得分:0)
听起来你正在寻找静态场,但如果是这样的话,你几乎肯定会重新考虑你当前的设计。
public class YourClass {
private static XComponentLoader loader;
public YourClass() {
YourClass.loader = new XComponentLoader();
}
}
并从另一个类访问它:
public YourOtherClass {
public void yourMethod() {
YourClass.loader ...
}
}
答案 3 :(得分: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);
// ...
}
答案 4 :(得分:0)
我已将功能拆分为两个类,然后您可能希望让一个类实例化另一个类。
如果你把新代码放在B类中,那么它可能看起来像这样。
public class A {
// Class B instance
B b = new B();
public void doSomething() {
b.loadComponentFromURL("someurl");
}
}
或者如果加载器本身就是一个实例,你可以像这样调用它。
b.getLoader().loadComponentFromURL("someurl");