Java serialVersionUID 有什么作用?
我们都知道对象要序列化和反序列化要实现Serializable接口,但是仅仅知道这一点似乎还少了一点,那就是serialVersionUID要不要声明。有时候我们似乎不声明serialVersionUID也不会报错,但是有时候又会莫名其妙的收到InvalidClassException错误。似乎我们有必要来了解一下serialVersionUID的作用到底是什么了。在没有显示声明serialVersionUID的时候,Java编译器会给我们生成一个默认的serialVersionUID,并且这个生成也会遵循一定的规范。但是不同的Java编译器可能会生成不同的serialVersionUID,所以在反序列化的时候就会收到InvalidClassException的错误。所以为了避免因Java编译器不同导致反序列化失败的问题,最好还是要显示的声明一下serialVersionUID。这个serialVersionUID就是标明对象的版本的,如果版本号不对,Java将不会对其进行反序列化。所以这就能解释之前我在idea中启动项目把Redis中的一个缓存对象读出来反序列化为Java对象时为什么
2020-10-09 技术分享
怎么合并一个实例的两个不同对象
在工作过程中,我们可能会遇到这么一个需求,就是对于同一个类的两个不同对象(就是不为空的属性各不同)怎么合并他们成一个对象,并且包含他们两个的所有属性。因为要获取一个对象的所有属性,我们自然想到要用反射,于是就有了下面的代码:public static <T> T combineSydwCore(T sourceBean, T targetBean){ Class sourceBeanClass = sourceBean.getClass(); Class targetBeanClass = targetBean.getClass(); Field[] sourceFields = sourceBeanClass.getDeclaredFields(); Field[] targetFields = targetBeanClass.getDeclaredFields(); for(int i=0; i<sourceFields.length; i++){ Field sourceField = sourceFie
2020-09-28 技术分享