Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象类型到读取器类型?_Java - Fatal编程技术网

Java 对象类型到读取器类型?

Java 对象类型到读取器类型?,java,Java,我有一个java.io.Reader作为方法的返回类型。但我有一个实例的对象类型,它是从数据库中获取的。那么如何将其转换为Reader类型并返回呢 我有以下代码,其中getByteArrayObject()返回一个字节数组。我同样需要返回,但返回类型是Reader,我无法更改 public Reader getMediaReader(String arg0) { // TODO Auto-generated method stub Object obj = getByteAr

我有一个java.io.Reader作为方法的返回类型。但我有一个实例的对象类型,它是从数据库中获取的。那么如何将其转换为Reader类型并返回呢

我有以下代码,其中getByteArrayObject()返回一个字节数组。我同样需要返回,但返回类型是Reader,我无法更改

 public Reader getMediaReader(String arg0) {
    // TODO Auto-generated method stub
    Object obj  = getByteArrayObject();
    System.out.println("HELLO I AM DETCTED....... in getMediaReader");
    return null;
    }
需要帮助吗
谢谢。

首先,我想澄清一下,java中没有自动将一个对象转换为另一个对象的概念。 你从DB得到什么样的对象?如果它本身是读取器对象的序列化版本,那么在反序列化时,您应该返回读取器对象。 如果您想从对象中的内容构造一个reader对象,假设您想要读取一个字符串数据,那么您需要创建一个StringReader,并在该reader扩展时返回它


Java中的Reader类表示字符流层次结构

首先,我想澄清一下,java中没有自动将一个对象转换为另一个对象的概念。 你从DB得到什么样的对象?如果它本身是读取器对象的序列化版本,那么在反序列化时,您应该返回读取器对象。 如果您想从对象中的内容构造一个reader对象,假设您想要读取一个字符串数据,那么您需要创建一个StringReader,并在该reader扩展时返回它


Java中的Reader类表示字符流层次结构

调用方希望如何读取数据?他们期望得到什么

听起来您可能希望序列化为某种基于文本的格式(JSON?XML?),然后返回一个允许客户端读取该数据的字符串。但这取决于客户的期望。。。您可能需要编写一个类似的方法来基于文本数据创建对象的新实例


当您考虑序列化时,也值得考虑版本控制——一旦您了解了您想要做的事情的基本情况,请考虑如果您曾经向类中添加字段会发生什么。您将如何读取旧数据?旧代码将如何处理新数据?您需要如何前后兼容?

调用者希望如何读取数据?他们期望得到什么

听起来您可能希望序列化为某种基于文本的格式(JSON?XML?),然后返回一个允许客户端读取该数据的字符串。但这取决于客户的期望。。。您可能需要编写一个类似的方法来基于文本数据创建对象的新实例


当您考虑序列化时,也值得考虑版本控制——一旦您了解了您想要做的事情的基本情况,请考虑如果您曾经向类中添加字段会发生什么。您将如何读取旧数据?旧代码将如何处理新数据?您需要如何前后兼容?

根据您编辑的问题

假设
getByteArrayObject()
返回的字节数组是以某种已知字符集/编码方式进行文本编码的,那么以下内容就足够了:

 public Reader getMediaReader(String arg0) throws IOException {
     byte[] bytes = getByteArrayObject();
     return new InputStreamReader(
                new ByteArrayInputStream(bytes), ENCODING_NAME);
}
其中
ENCODING\u NAME
是编码的名称


编辑-我猜
arg0
参数应该包含编码名称。

根据您编辑的问题

假设
getByteArrayObject()
返回的字节数组是以某种已知字符集/编码方式进行文本编码的,那么以下内容就足够了:

 public Reader getMediaReader(String arg0) throws IOException {
     byte[] bytes = getByteArrayObject();
     return new InputStreamReader(
                new ByteArrayInputStream(bytes), ENCODING_NAME);
}
其中
ENCODING\u NAME
是编码的名称


EDIT-我猜
arg0
参数应该包含编码名称。

(读卡器对象的序列化版本听起来有点疯狂…)我同意。。。但是原始问题中的信息少了一点,所以我开始猜测路径:)(reader对象的序列化版本听起来有点疯狂…)我同意。。。但原始问题中的信息少了一点,所以我开始猜测路径:)