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



下面的代码给出错误,它找不到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();
         }
   }
 }

这里哪一部分有错?

你应该将你的"in"声明为缓冲读取器,而不是读取器:

BufferedReader in = null;

读取器接口不存在 readLine(( 方法。

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

最新更新