java中从一种类型转换为另一种类型的简单方法(当字段相似时)?
假设我有两门课:java中从一种类型转换为另一种类型的简单方法(当字段相似时)?,java,java-8,Java,Java 8,假设我有两门课: class A { String firstA; List<String> secondA; } class B { String firstB; List<String> secondB; } A类{ 第一串; 第二名单a; } B类{ 字符串firstB; 名单b; } 有没有一种简单的方法可以轻松地从A转换为B?不必为每个字段手动执行此操作?我认为本机java无法做到这一点 有一些库可以帮助您解决此类问题 我推荐M
class A {
String firstA;
List<String> secondA;
}
class B {
String firstB;
List<String> secondB;
}
A类{
第一串;
第二名单a;
}
B类{
字符串firstB;
名单b;
}
有没有一种简单的方法可以轻松地从A转换为B?不必为每个字段手动执行此操作?我认为本机java无法做到这一点 有一些库可以帮助您解决此类问题 我推荐MapStruct:
我还使用了Orika和ModelMapper。我认为原生java无法做到这一点 有一些库可以帮助您解决此类问题 我推荐MapStruct:
我还使用了Orika和ModelMapper。为此,您可以使用反射 查看java.lang.reflect,获取每个字段的A.class和循环,以复制值
你可以使用反射来达到这个目的 查看java.lang.reflect,获取每个字段的A.class和循环,以复制值
您可以在Java库中使用ModelMapper 您可以在Java库中使用ModelMapper 简短回答 在纯Java中,不需要逐个复制字段,就无法将A类型的对象转换为B类型的对象
更长的答案
这是为什么? 在
Java
中没有类似的字段。设计的Java
语言不支持。因此,您不能按名称将两个字段视为类似的
我怎样才能完成它?
有不同的方法:
- 手动映射
和继承
多态
和/或
父类`,将对象视为相似的
- 序列化和反序列化到/从
字符串
- 使用基于
:反射的库和
反射的库
- 使用代码生成器
- 这种特殊情况是否值得添加外部依赖关系
- 它容易阅读吗
- 在不破坏代码的情况下修改类容易吗
- 它是否在运行时执行
- 等等
更长的答案
这是为什么? 在
Java
中没有类似的字段。设计的Java
语言不支持。因此,您不能按名称将两个字段视为类似的
我怎样才能完成它?
有不同的方法:
- 手动映射
和继承
多态
和/或
父类`,将对象视为相似的
- 序列化和反序列化到/从
字符串
- 使用基于
:反射的库和
反射的库
- 使用代码生成器
// warning: not tested nor compiled -take it as hint
A a = new A(); ...set values
B b = new B();
for (Field f : A.class.getFields()) {
f.set(b,f.get(a);
}