引用BufferedReader对象的Reader类型的对象无法访问方法readLine()

时间:2019-04-25 09:51:37

标签: java bufferedreader reader

以下代码给出了错误,即找不到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 个答案:

答案 0 :(得分:4)

您应将您的“ in”声明为BufferedReader,而不是Reader:

BufferedReader in = null;

Reader接口不存在readLine()方法。

read()方法是在Reader接口中定义的,因此扩展/实现它的任何接口或类也将具有read()方法。 但是,readLine()方法仅在BufferedReader接口中定义。即使在运行时声明为Reader的对象恰好是BufferedReader的实例,在编译时也会出现错误,因为仅声明的类型很重要。