我正在尝试编写一个Java程序来解码和编码Ogg流。我有一个解码器工作,但我不喜欢这样的事实,我不得不重复的代码,所以我开始写类似的东西:反射,散列表或性能方法?
Decoder oggDecoder = new Decoder(
new StringDecoder("Ogg"),
new IntDecoder("something")//, ...
);
我写的编码器和解码器的一些“类型”,然后用它们来构建整个事情。 但是我不知道如何存储结果。我知道3个选项: - 将数据保存在一个字节数组中,并提供可直接在字节上工作的get(String name)
和set(String name, Object value)
方法。 - 使用字典。 - 使用一个类并使用反射来设置属性。
我对性能没有太大的了解,如果速度很慢,只要速度足够快就可以读取音乐,我并不在乎。这意味着我知道自己编写这些函数会让它更快,但是我只想编写一个适用于所有属性的函数。
那么你认为这样做的最快方法是什么?
另一种方式来问这个问题是: 给定一组字段名称作为一个String数组,什么是最合适的数据结构来存储接到一个字节流解码的相应值: - 让他们作为字节 - 将它们存储在字典中 - 使用反射将它们存储在类中
在此先感谢您的回答。
那么在这种情况下,我不妨将它们保留在原始字节数组中...... 因为使用散列表/类的整个要点是让数据具有正确的类型,例如4个字节作为整数,因为在对它进行解码之后,我需要一种“简单”的方式从程序的另一部分(例如从Ogg流中读取数据并读取其中的Vorbis数据包)读取数据。 – xavierm02 2012-08-14 15:23:59
是否真的没有办法告诉它“你将需要准确的***字节:int,a ...等? 因为名称是动态的,因为我不想写同样的东西20次,但最后它们不会改变 – xavierm02 2012-08-14 15:48:36
经过一段时间,看起来你是对的,除非你使用HashMap,否则它会变得非常复杂,我将使用HashMap虽然。 –
xavierm02
2012-08-14 16:23:54