我正在用java设计一个程序
很多对象只是数据包,并不需要任何非静态方法。
我想轻松保存并加载硬盘中的对象。
某些对象实例需要一个额外的属性,我可能会随着时间的推移添加或删除。
如果某些对象确实有其他属性,那么我仍会在大多数情况下将它们视为完全相同的对象。
对此来说,一个好的解决方案似乎是在运行时以JSON格式存储这些对象,而从不为它们实际定义专用对象。你有什么理由不想这样做吗?也就是说,为了方便起见,以json格式存储对象是不是很糟糕?
答案 0 :(得分:1)
许多对象只是数据包,并不需要任何非静态方法。 这些数据会被多个类使用吗?你会修改上述数据吗?如果您对其中任何一个回答“是”,那么我会创建一个对象。
我想从硬盘轻松保存和加载对象。 JSON是一种很好的方法,这里没有问题
某些对象实例需要一个额外的属性,我可能会随着时间的推移添加或删除。 JSON旨在提供灵活性,没有问题或理由为什么您需要一个类/对象
如果某些对象确实有其他属性,那么我仍然会在大多数情况下将它们视为完全相同的对象。 同样,这里没有问题JSON很好
答案 1 :(得分:0)
如果您来自Objective-C / PHP(或其他语言)词典或其他类型的地图,则键/值对很常见。
但在Java中,通常首选强类型对象:有时称为POJO(Plain Old Java Objects)。 Java是一种面向对象的语言,您可以从OO概念中获益。对于非常小的应用程序来说并不总是显而易见的,但通常它是要走的路。强类型对象涉及更多锅炉板代码,但任何现代IDE都会为您做(生成getter / setter)。所以这不是反对它的论据。
除此之外,使用Jackson / GSon / Moxy将POJO对象存储到JSON是非常容易的。有很多很好的JSON提供程序/库可以在没有任何配置的情况下使用POJO(或者很少)。
我可以看到的其他优点:
使用pojo IDE时,还会在编码时显示可用的getter / setter。
今天你可以将你的“对象”存储在磁盘上的JSON中,明天你可以将它们存储在数据库中。您可以通过一些注释轻松地从Jackon序列化(或您首选的JSON库)切换到JPA。
许多框架(JAX-RS,JPA,JAXB)都需要强类型对象,并使用反射或类似方法来检查和处理对象。