Вызовите строку из одного метода в другой в Java - PullRequest
1 голос
/ 27 февраля 2011

извините, если это простой вопрос, но я уже давно пытаюсь, можно ли вызвать строку из одного метода в другой ...

Ниже я хочу вызвать строку fileName от метода fileName до fileOutputToFile.Я знаю, что могу передать это, но я хочу позвонить с fileOutputToFile.

public class outputToFile {

    public void fileName(){

         String fileName = "Test";

    }

    public void fileOutputToFile(String hex) throws Exception{

        String fileInfo = hex;

        try {
                PrintWriter out = new PrintWriter(new BufferedWriter(
                                         new FileWriter("myfile.txt", true)));
                out.print(fileInfo);
                out.print("\n");
                out.close();
            }catch (IOException e){
            }
    }
}

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011

Невозможно вызвать локальную переменную, которая находится в другом методе - это проблема области действия.

Следовательно, невозможно извлечь переменную fileName из метода fileName() из метода fileOutputToFile.

Один из способов «извлечь» имя файла - это return имя файла при вызове метода fileName:

public String getFileName(){
     String fileName = "Test";
     return fileName;
}

(Примечание: я позволил себе переименовать метод во что-то, что было бы ближе к соглашениям по именованию идентификаторов в Java.)

Затем в методе fileOutputToFile может быть вызван метод getFileName для получения значения fileName.


Следует отметить, что в этом случае на самом деле может быть лучше просто использовать поле (переменную экземпляра или класса), а не вызывать отдельный метод для получения имени файла. Учитывая, что метод просто возвращает константу String, поле может содержать значение:

public class OutputToFile {
    // Here, we use a class variable.
    private static final String FILE_NAME = "Test";

    public void fileOutputToFile(String hex) {
        // use FILE_NAME field here.
    }
}
0 голосов
/ 27 февраля 2011

Если я вас правильно понимаю, вы хотите вернуть строку из fileName ().

В настоящее время ваша реализация fileName () ничего не делает.Вы должны добавить инструкцию return для возврата значения: 'return "Test"'

0 голосов
/ 27 февраля 2011

Все переменные имеют область действия, которая обычно ограничена оболочкой {}, в которой они находятся. Таким образом, если вы создаете переменную в одном методе, она не доступна в другом методе, пока вы не передадите ее.

Хорошей новостью является то, что вы можете создавать переменные уровня класса, которые будут использоваться всеми методами внутри класса!

public class OutputToFile {

    private String fileName = "Test";

    public void fileName() {
           System.out.println(fileName);
           fileName = "Something Different"
    }

    public void fileOutputToFile(String hex) {
           System.out.println(fileName);
           // Do other things with it
    }
}
...