当前位置: 首页 > 知识库问答 >
问题:

将非bean POJO包装成Javabean

郎长卿
2023-03-14

提前感谢!

共有1个答案

姚鹤龄
2023-03-14

您可以将不可变类的实例包装在动态代理(java.lang.Reflection.InvocationHandler)中。代理反过来可以使用反射来提供您喜欢的操作。Apache Beanutils可以在这方面有所帮助,Hibernate使用CGLIB来加快速度。

可能有这样的用例,比如修复第三方库中的错误,但这种情况很少。如果是这样的话,aspectj及其拦截器也会有所帮助。

因此,推荐的方法是将不可变类的实例中的值复制到另一个可变类的实例中,改变那里的状态,然后以某种“官方”的方式持久化它。这样做的原因已经在JB Nizet的精彩评论中描述了,所以他应该为此得到赞扬。

 类似资料:
  • 问题内容: 我用来填充包含HTML无序列表()的模板。 这些中的大多数没有那么长,但是有一些长度却很可笑,实际上可以容纳2-3列。 有没有HTML,ColdFusion或JavaScript(我接受jQuery解决方案)的方法可以轻松地做到这一点?为了节省一些滚动,不值得使用过于复杂的重量级解决方案。 问题答案: 所以我从A List Apart CSS Swag:Multi-ColumnList

  • 问题内容: 如何将Mailjet API PHP包装器作为库集成到我的Codeigniter安装中? 是否简单地将存储库中的内容放入其中,然后创建一个用于初始化Mailjet 的文件,如下所示? 如果我走的路正确,请告诉我。谢谢。 问题答案: 是的,您步入正轨。但是您不需要创建CI库。还要在控制器中使用存储库。只需使用CI 文档中所述的作曲器即可。 如果要让CodeIgniter使用Compose

  • 问题内容: 我收到以下错误: 这是我的组件: 我在这里做错了什么? 问题答案: 由于您已经使用过,因此该组件将无法作为道具使用。由于您已经使用过,作业操作将作为道具提供,您可以像这样使用它们 但是您可以进一步简化它,例如

  • 基本上,我想将以下值打印为“真”,“假”或“无”。如果我尝试只使用包装值,我会得到我想要的“nil”,但会得到不需要的“Optional(true)”或“Optional(false)”。如果我强制解开该值的包装并且该值为n,则会出现致命错误。我尝试了下面的代码,因为我已经看到它适用于字符串,但由于“nil”不是Bool类型,因此不被接受。对此有什么解决方案吗? 我要导出到一个csv文件,知道这个

  • 我在看一个项目,我发现了一些很奇怪的东西。 现在,我认为唯一的两个优点是,在非静态容器中封装时,命名更加清晰,并且可以传递的参数更少。 但我想知道这是不是一个好主意,通过设计来包装静态类与非静态?如果有的话,还有哪些其他原因?因为我认为创建一个静态并对其进行调用是可以的。但是这个项目特意将所有静态类打包;我也不知道为什么。

  • 问题内容: 我正在尝试为SOLR扩展Docker容器。我只想安装到它。但是,当我运行docker build时,它抱怨我不是root。 这是我要扩展的DockerFile:https : //github.com/makuk66/docker- solr/blob/master/5.3/Dockerfile 我的构建文件是这样的: 然后输出: 有什么方法可以将软件包安装到此容器中?还是我需要从ma