getter 和 setter 的动态类型转换

问题描述

我需要一个解决问题的逻辑,想象一下我们有一个有 50 个属性的 bean,其中有 getter 和 setter,在更新 bean 对象时,我必须编写许多 getter 和 setter 语句,我需要一个逻辑来获取和设置循环中的值。我知道我必须向下转型,但向下转型应该是动态的。

简单来说,我需要一个方法来接受任何类型对象并进行类型转换以获取其所有属性

class ExampleGetterSetter {

   public <T> T getSet(Object obj1,Object obj2) {
      // Object obj1,obj2 should be dynamically typecasted to get its properties,// I dont want to use instance of operator here
      // this will reduce great lines of code in my project
   }

}

解决方法

我不明白你的问题是什么。如果你有一个很大的bean,你想循环设置它的属性,关键是数据源是什么?

如果数据源是sturct数据之类的map或者entry列表,可以使用反射来遍历bean的属性,并使用反射来设置。

如果数据源是另一个bean甚至同一个bean,反射仍然是一种选择。

事实上,有一个著名的图书馆 commons-beanutils 可以帮助您完成上述所有事情。

另一方面。如果您有一个非常大的 bean,并且想要创建一个类似的 bean,您可以使用我的库 beanknife。它是从另一个类生成类的工具,并在其中提供转换器方法。例如

class Bean {
   // many many properties.
}

@ViewOf(value = Bean.class,includePattern = ".*")
class BeanDtoConfiguration {
}

然后会生成一个这样的类

class BeanView {
   // many properties same with Bean

   // the converter method.
   public static BeanView read(Bean bean) {
       ...
   }
}