下面的一个简单的类在下面解释我的问题:
public class TestA extends TestParent {
public TestA {
//some code here
}
public void connect() {
//some more code here
File project = otherproject.getProjectFile();
}
}
我希望此project
文件在TestParent
中可用。有没有办法在TestParent
中不创建全局变量的方法?如果还有其他方法,请告诉我。如果由于某种原因在这种情况下不使用全局变量是一个坏主意,请也进行注释。
答案 0 :(得分:1)
使用抽象方法“ getProjectFile”将TestParent类更改为abstrac类
public abstract class TestParent {
private void methodThatUseFile(){
// invoke child implementation
// in this way parent can use project created in child class
File project= this.getProjectFile();
// TODO
}
abstract File getProjectFile();
}
然后在子类中实现abstract方法
public class TestA extends TestParent {
public TestA {
//some code here
}
@Override
public File getProjectFile() {
//some more code here
File project = otherproject.getProjectFile();
return project;
}
}
答案 1 :(得分:0)
使它成为connect()
方法的返回值:
protected File connect() {
//some more code here
File project = otherproject.getProjectFile();
return project;
}
答案 2 :(得分:0)
您到底想做什么?
您可以这样创建TestParent:
public class TestParent {
protected File project;
}
并拥有:
public void connect() {
//some more code here
project = otherproject.getProjectFile();
}
或者也许:
public class TestParent {
private File project;
protected setProject(File project) {
this.project = project;
}
}
使用:
public void connect() {
//some more code here
setProject(otherproject.getProjectFile());
}
或者(!)如果TestParent正在动态调用connect(),则可以让connect()返回文件:
public File connect() {
//some more code here
return otherproject.getProjectFile();
}