2012-08-07 85 views
1

我正在开发一个java应用程序,它需要一个动态属性的特殊组件。参数序列化(使用JSON)并存储在数据库中,然后在运行时反序列化。所有属性都显示在带有3列(属性名称,属性类型和属性值)的JTable中,并存储在散列表中。java动态属性表

我现在有两个问题要解决:

  1. HashMap中还可以存储对象和对象可以被设置为null。如果设置为空,我不知道他们属于哪个类。我怎么能存储对象,即使它们为空,并知道它们属于哪个类?我是否需要将每个对象包装在一个将保存存储对象的类的类中?

  2. 对象在运行时从json反序列化。问题在于存在许多不同类型的对象,而我实际上并不知道将存储在散列映射中的所有对象类型。所以我正在寻找一种动态反序列化对象的方法。有没有这种方法?我将不得不将对象的类存储在序列化的json字符串中吗?

谢谢!

+0

在您的JTable中,如果属性值是对象,第三列将显示什么? – 2012-08-07 13:51:45

+0

object.toString() – blejzz 2012-08-07 13:54:34

+0

您真正的需求是:A)序列化/持久化Java对象或B)以JSON动态存储数据?此外,看到这个问题http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in-java?rq=1 – 2012-08-07 14:23:53

回答

2
  1. 看看到空对象模式。您可以使用额外的类来表示类型的Null实例,并可以包含有关其自身的信息。

  2. 有一种叫做的类令牌,它是使用Class对象作为异构容器的键。看看Effective Java通过Joshua Bloch,Item 29。我不确定这种方法如何适用于您,因为您可能有许多相同类型的实例,但我将其作为参考。