объект типа Reader, ссылающийся на объект BufferedReader, не может получить доступ к методу readLine () - PullRequest
0 голосов
/ 25 апреля 2019

Следующий код выдает ошибку, что он не может найти метод readLine ().Тем не менее, это работает, если я заменил readLine () на read () и внесу несколько изменений соответственно.

import java.io.*;
class Console {
public static void main (String[] args) throws IOException {
Reader in = null;
String c;
try {
      in = new BufferedReader (new InputStreamReader(System.in));
       System.out.println("type 'quit' to quit!");
      do { 
              c=in.readLine();
              System.out.println(c);
            } while(!c.equals("quit");
        } finally {
               if(in!=null) in.close();
         }
   }
 }

Какая часть здесь виновата?

1 Ответ

4 голосов
/ 25 апреля 2019

Вы должны объявить ваше «in» как BufferedReader, а не как Reader:

BufferedReader in = null;

Метод readLine () не существует для интерфейса Reader.

Read () определяется в интерфейсе Reader, поэтому любой интерфейс или класс, расширяющий / реализующий его, также будет иметь метод read ().Однако метод readLine () определяется только в интерфейсе BufferedReader.Даже если во время выполнения объект, объявленный как Reader, является экземпляром BufferedReader, во время компиляции возникает ошибка, поскольку имеет значение только объявленный тип.

...