我想为java的Reader类创建一个新的类对象,但由于它受到保护,我无法访问构造函数。
Reader myReader = new Reader();
不行。
通常,我会创建一个新的函数来访问该构造函数的类,但由于该函数是java默认库的一部分,我该如何访问它?谢谢你的帮助。
答案 0 :(得分:6)
Reader是一个抽象类。您无法实例化它,仅用于创建子类实例。
你的意思是
Reader myReader = new InputStreamReader(in, "UTF-8");
答案 1 :(得分:4)
Reader
是一个抽象类,因此您必须实例化它的实现,例如BufferedReader
或InputStreamReader
。
答案 2 :(得分:3)
正如其他人所说,您可以创建Reader
的子类实例,例如BufferedReader
。
如果您不想使用Reader的子类,您可以创建Reader
的实例,如下所示
Reader reader = new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
// TODO Auto-generated method stub
return 0;
}
@Override
public void close() throws IOException {
// TODO Auto-generated method stub
}};
答案 3 :(得分:1)
如果查看Reader Java Doc,您可以看到Reader
的具体子类根据您的要求对其中任何一个进行了分析。你不能实际Reader
,因为它是abstract
的BufferedReader
CharArrayReader
FilterReader
InputStreamReader的
PipedReader
StringReader