2014-01-18 2 views
0

У меня есть два класса, Test и Test2. Тест создает экземпляр Test2, который используется для записи в файл с помощью PrintStream и FileOutputStream.write (String) имеет частный доступ в PrintStream

Я получаю сообщение об ошибке:

write(String) has private access in PrintStream 
     output.write(str); 
      ^

Почему это дает мне эту ошибку, если я правильно называть приватную переменную внутри класса он был объявлен в?

public class Test 
{ 
    public static void main (String[] args) 
    { 
      Test2 testWrite = new Test2(); 
      testWrite.openTextFile(); 
      testWrite.writeToFile("Hello."); 
      testWrite.closeFile(); 
    } 
} 

и

import java.io.*; 

public class Test2{ 
    private PrintStream output; 

    public void openTextFile(){ 
     try{ 
      output = new PrintStream(new FileOutputStream("output.txt")); 
     } 
     catch(SecurityException securityException){} 
     catch(FileNotFoundException fileNotFoundException){} 
    } 
    public void writeToFile(String str){ 
     try{ 
      output.write(str); 
     } 
     catch(IOException ioException){} 
    } 
    public void closeFile(){ 
     try{ 
      output.close(); 
     } 
     catch(IOException ioException){} 
    } 
} 

ответ

1

private методы доступны только внутри класса, из которого они были объявлены. Вы можете использовать print

output.print(str); 

или println, если вам нужно символы новой строки должны быть записаны в файл.

Read: Controlling Access to Members of a Class

+0

Есть ли причина записи частный метод и Println нет? Почему javadocs не показывают, что [write] (http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#write (int)) является приватным? Это сработало. – Matthew

+0

Вы смотрите на неправильный метод 'write', который имеет другую подпись. В вопросе принимает строку, которая является [private] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/PrintStream.java# PrintStream.write% 28char% 5B% 5D% 29). Я бы предположил, что 'write (String)' предназначен только для внутреннего использования – Reimeus

+0

О, я вижу. Являются ли документы java, которые я рассматриваю неправильно, или я неправильно их интерпретирую? – Matthew

Смежные вопросы