代码之家  ›  专栏  ›  技术社区  ›  GuruKulki

对象类型到读卡器类型?

  •  0
  • GuruKulki  · 技术社区  · 15 年前

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

    我有以下代码,其中getBytearrayObject()返回字节数组。同样,我需要返回,但返回类型是读卡器,我不能更改。

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

    需要帮助 谢谢。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Stephen C    15 年前

    基于您编辑的问题…

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

     public Reader getMediaReader(String arg0) throws IOException {
         byte[] bytes = getByteArrayObject();
         return new InputStreamReader(
                    new ByteArrayInputStream(bytes), ENCODING_NAME);
    }
    

    在哪里? ENCODING_NAME 是编码的名称。

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

        2
  •  2
  •   Jon Skeet    15 年前

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

    听起来像你 可以 想要序列化为某种基于文本的格式(JSON?XML?)然后返回 StringReader 这样客户机就可以读取这些数据。但这真的取决于客户的期望…您可能需要编写一个类似的方法来基于该文本数据创建对象的新实例。

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

        3
  •  1
  •   Fazal    15 年前

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

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