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

问题描述 投票:0回答:1

以下代码给出了无法找到readLine()方法的错误。但是,如果我用read()替换readLine()并相应地进行一些更改,它就可以工作。

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();
         }
   }
 }

哪个部分有问题?

java bufferedreader reader
1个回答
4
投票

您应该将'in'声明为BufferedReader而不是Reader:

BufferedReader in = null;

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

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

© www.soinside.com 2019 - 2024. All rights reserved.