我正在编写一个快速的方法,使用Google Gson将对象转换为JSON。这很简单,但我想集中我的JSON构建过程,以防我想做进一步的更改:
public static String buildJSONObject(Object obj) {
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
return gson.toJson(obj);
}
现在我对此有两个问题(这是可行的),
-Is使用Object可以作为方法参数,还是有更好的方法使用泛型?
-Is如果不断地将对象强制转换为传递给方法的任何类型的对象,是否存在性能开销?
发布于 2011-07-16 16:43:40
使用Object or作为方法参数,还是有更好的方式使用泛型?
泛型提供了类型安全,并更好地显示了意图,从而使代码更加简洁。也就是说,只有当您知道要传递给方法的对象类型,并且已经建立了某种对象层次结构,并从中扩展所有JSON对象时,它们才能真正提供这些好处。如果您真的希望能够将太阳下的任何对象转换为JSON,那么Object obj
就是您的选择。
如果不断地将对象强制转换为传递给方法的任何类型的对象,是否存在性能开销?
使用强制转换不会出现性能问题。你应该担心的是类型安全和来自无效类型转换的RuntimeExceptions。如果您确定要进入方法的对象的类型,则在进行强制转换时要小心。你也可以先做一个instanceof
检查的安全转换,这样就不会有太大的问题。
发布于 2011-07-16 16:37:59
您希望能够将任何类型的对象传递给该方法吗?如果是,则参数类型应为Object
。非那样做不行。泛型只有在实际执行某些操作时才提供值,例如约束输入类型以便您可以在其上调用某些方法,确保方法的多个参数以某种特定方式相关,或者确保输出类型以某种方式与输入类型相关,等等。在这种情况下,泛型参数不会提供Object
所不提供的任何东西。
当然,您也不应该担心由此产生的任何开销(无论如何,很可能没有任何开销)。如果您想要担心开销,请考虑如何创建一个新的GsonBuilder
实例,以便在每次调用该方法时创建一个新的Gson
实例,而实际上您可能只重用了一个Gson
对象。
https://stackoverflow.com/questions/6718737
复制相似问题