美文网首页
Objenesis二十秒教程

Objenesis二十秒教程

作者: JohnShen | 来源:发表于2015-12-22 11:22 被阅读987次

该文档翻译自Objenesis官方文档
原文链接:http://objenesis.org/tutorial.html

二十秒教程

在Objenesis中有两个主要的接口:

  • ObjectInstatiator - 初始化一个单独的类的多个实例
  • InstantiatorStrategy - 一个特定的策略来决定怎么实力化一个类(对不同类型的类这个策略是不同的)

注意:所有的Objenesis类都位于oeg.objenesis包中

一步步进行

Objenesis使用了许多不同的策略来基于JVM提供商、JVM版本进行实例化对象,从而SecurityManager和class的类型将被实例化。

我们已经定义了两种不同种类的必要的实例:

  • Standard - 没有构造方法被调用
  • Serializable compliant - 表现的像是一个对象被通过java标准的序列化而被实例化。这意味着第一个不可序列化的父类的构造方法将被调用。然而,readResolve没有被调用,并且如果这个对象是可序列化的那么我们将从不检查它。

使用Objenesis最简单的方法是通过使用ObjenesisStd(Standard)和ObjenesisSerializer(Serializable compliant)。默认地,将会自动地决定使用哪种策略--所以你没必要指定。

Objenesis objenesis = new ObjenesisStd(); // or ObjenesisSerializer

一旦你有了这个Objenesis的实现,就能够在接下来为一个具体的类型创建一个ObjectInstantiator

ObjectInstantiator thingyInstantiator = objenesis.getInstantiatorOf(MyThingy.class);

最终,你能使用它来为这个类型来实例化新的实例。

MyThingy thingy1 = (MyThingy)thingyInstantiator.newInstance();
MyThingy thingy2 = (MyThingy)thingyInstantiator.newInstance();
MyThingy thingy3 = (MyThingy)thingyInstantiator.newInstance();

性能和线程

为了提高性能,最好能够尽可能地重用ObjectInstantiator对象。比如,如果你正在实例化一个类的多个实例,请通过同一个ObjectInstantiator进行。

InstantiatorStrategyObjectInstantiator两者都能够在多线程和并发情况下共享。它们是线程安全的。

完整代码

Objenesis objenesis = new ObjenesisStd(); // or ObjenesisSerializer
MyThingy thingy1 = (MyThingy) objenesis.newInstance(MyThingy.class);

// or (a little bit more efficient if you need to create many objects)

Objenesis objenesis = new ObjenesisStd(); // or ObjenesisSerializer
ObjectInstantiator thingyInstantiator = objenesis.getInstantiatorOf(MyThingy.class);

MyThingy thingy2 = (MyThingy)thingyInstantiator.newInstance();
MyThingy thingy3 = (MyThingy)thingyInstantiator.newInstance();
MyThingy thingy4 = (MyThingy)thingyInstantiator.newInstance();

相关文章

  • Objenesis二十秒教程

    该文档翻译自Objenesis官方文档原文链接:http://objenesis.org/tutorial.htm...

  • spring源码构建时缺失spring-cglib-repack

    spring源码构建时缺失spring-cglib-repack和spring-objenesis-repack的...

  • 常用第三方库教程

    ReactiveCocoa 教程一 教程二 FMDB 教程一 教程二 MJExtension 教程一

  • 2016年12月25日群资料整理

    2016年12月25日群资料整理目录 出彩分享一:希坦情绪六十秒分享一 出彩分享二:希坦情绪六十秒分享二 出彩分享...

  • 20161216 11/35 测试

    二分二十秒。 盯看,看久了就会觉得动。

  • 二分四十秒

    你还让自己活在抱怨、猜疑、嫉妒、自卑、不满、忧虑、担心、沮丧、 冷漠等负面能量的情绪之中吗? 根据量子物理学,量子...

  • 2017年1月6日群资料整理

    2017年1月6日群资料整理目录 出彩分享一:希坦情绪密码六十秒分享——1.4 出彩分享二:希坦情绪密码六十秒分享...

  • 2017年1月21日群资料整理

    2017年1月21日群资料整理目录 出彩分享一:希坦情绪密码六十秒分享——全脑表达 出彩分享二:希坦情绪密码六十秒...

  • 十秒钟

    我只想要十秒钟! 一天有86400秒,我只想你能给我十秒。 十秒,短暂的十秒。这十秒可以让一颗爱你的心落地,这十秒...

  • rancher教程目录

    rancher教程一(安装)rancher教程二(nfs)rancher教程三(jenkins)rancher教程...

网友评论

      本文标题:Objenesis二十秒教程

      本文链接:https://www.haomeiwen.com/subject/xtomhttx.html