Отправить объект в родительский класс без использования глобальной переменной - PullRequest
0 голосов
/ 15 марта 2019

Простой класс ниже, чтобы объяснить мой вопрос ниже:

 public class TestA extends TestParent {
    public TestA { 
        //some code here
    }
    public void connect() {
        //some more code here
        File project = otherproject.getProjectFile();
    }
 }

Я хочу, чтобы этот project файл был доступен в TestParent.Есть ли способ сделать это без создания глобальной переменной в TestParent?Если есть другие способы, пожалуйста, дайте мне знать.Если по какой-либо причине не использовать глобальную переменную в этом сценарии - плохая идея, прокомментируйте это также.

Ответы [ 3 ]

1 голос
/ 15 марта 2019

Измените класс TestParent на класс abstrac с помощью абстрактного метода 'getProjectFile'

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();

}

, затем реализуйте абстрактный метод в дочернем классе

public class TestA extends TestParent {
    public TestA { 
        //some code here
    }

    @Override
    public File getProjectFile() {
        //some more code here
        File project = otherproject.getProjectFile();
        return project;
    }
 }
0 голосов
/ 15 марта 2019

Что именно вы пытаетесь сделать?

Вы можете создать свой 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();
}
0 голосов
/ 15 марта 2019

Сделать возвращаемое значение метода connect():

protected File connect() {
    //some more code here
    File project = otherproject.getProjectFile();
    return project;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...