我正在尝试读取文件。所以在我的班级“ Skanner”中,我有一个看起来像这样的字段:

private Reader reader, readerX;

现在,我在构造器中初始化了这些字段:

public Skanner()
    {
        try
        {
            Reader readerX = new FileReader("aliceinwonderland.txt");
            Reader reader = new BufferedReader(readerX);
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


但是当我尝试在Skanner类的方法中使用字段时,出现空指针异常。如果我改为在构造函数的try块中使用reader.read(),则不会产生任何问题。为什么不能在启动它的范围之外调用reader.read()

最佳答案

您正在通过在方法中重新声明实例成员来隐藏它们。从发布的代码中删除Reader类型声明。

07-24 20:45