简体   繁体   English

Java:当java.io具有受保护的构造函数时,如何从java.io为Reader类创建新的类对象

[英]Java: How to create new class object for Reader class from java.io when it has protected constructor

I wanted to create a new class object for java's Reader class, but I can't access the constructor since it is protected. 我想为java的Reader类创建一个新的类对象,但由于它受到保护,我无法访问构造函数。

Reader Class Description 读者类描述

Reader myReader = new Reader(); 

Will not work. 不管用。

Normally, I would create a new function that class to access that constructor, but since the function is a part of java default library, how do I access it? 通常,我会创建一个新的函数来访问该构造函数的类,但由于该函数是java默认库的一部分,我该如何访问它? Thanks for any help. 谢谢你的帮助。

Reader is an abstract class. Reader是一个抽象类。 You cannot instantiate it, only for the purposes of making a subclass instance. 您无法实例化它,仅用于创建子类实例。

Did you mean 你的意思是

Reader myReader = new InputStreamReader(in, "UTF-8");

Reader是一个抽象类,因此您必须实例化它的实现,例如BufferedReaderInputStreamReader

As others said, you may create a instance of subclass of Reader , such as BufferedReader . 正如其他人所说,您可以创建Reader的子类实例,例如BufferedReader

If you don't want to use subclass of Reader, you may create instance of Reader like below 如果您不想使用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

        }};

If you check the Reader Java Doc you can see the concrete subclasses of Reader intialyze any one of them based on your requirement. 如果您查看Reader Java Doc,您可以看到Reader的具体子类根据您的要求对其中任何一个进行了分析。 You cannnot instantial Reader as it is abstract 你不是真正的Reader因为它是abstract

BufferedReader 的BufferedReader
CharArrayReader CharArrayReader
FilterReader FilterReader
InputStreamReader InputStreamReader中
PipedReader PipedReader
StringReader StringReader

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM