首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以将对象对象作为方法参数传递

是否可以将对象对象作为方法参数传递
EN

Stack Overflow用户
提问于 2011-07-17 00:32:00
回答 2查看 191关注 0票数 1

我正在编写一个快速的方法,使用Google Gson将对象转换为JSON。这很简单,但我想集中我的JSON构建过程,以防我想做进一步的更改:

代码语言:javascript
代码运行次数:0
运行
复制
public static String buildJSONObject(Object obj) {
    Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
    return gson.toJson(obj);
}

现在我对此有两个问题(这是可行的),

-Is使用Object可以作为方法参数,还是有更好的方法使用泛型?

-Is如果不断地将对象强制转换为传递给方法的任何类型的对象,是否存在性能开销?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-17 00:43:40

使用Object or作为方法参数,还是有更好的方式使用泛型?

泛型提供了类型安全,并更好地显示了意图,从而使代码更加简洁。也就是说,只有当您知道要传递给方法的对象类型,并且已经建立了某种对象层次结构,并从中扩展所有JSON对象时,它们才能真正提供这些好处。如果您真的希望能够将太阳下的任何对象转换为JSON,那么Object obj就是您的选择。

如果不断地将对象强制转换为传递给方法的任何类型的对象,是否存在性能开销?

使用强制转换不会出现性能问题。你应该担心的是类型安全和来自无效类型转换的RuntimeExceptions。如果您确定要进入方法的对象的类型,则在进行强制转换时要小心。你也可以先做一个instanceof检查的安全转换,这样就不会有太大的问题。

票数 1
EN

Stack Overflow用户

发布于 2011-07-17 00:37:59

您希望能够将任何类型的对象传递给该方法吗?如果是,则参数类型应为Object。非那样做不行。泛型只有在实际执行某些操作时才提供值,例如约束输入类型以便您可以在其上调用某些方法,确保方法的多个参数以某种特定方式相关,或者确保输出类型以某种方式与输入类型相关,等等。在这种情况下,泛型参数不会提供Object所不提供的任何东西。

当然,您也不应该担心由此产生的任何开销(无论如何,很可能没有任何开销)。如果您想要担心开销,请考虑如何创建一个新的GsonBuilder实例,以便在每次调用该方法时创建一个新的Gson实例,而实际上您可能只重用了一个Gson对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6718737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档