我正在尝试读取文件。所以在我的班级“ 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类型声明。