- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我声明了两个具有相同成员但由于某些原因分开的类。我实现了一个 util 类,将这 2 个类转换为 1 个相同的类,如下所示。
@Data
@Builder
public class VO1 {
private int id;
private String value1;
private String value2;
...
private String value20;
}
@Data
@Builder
public class VO2 {
private int id;
private String value1;
private String value2;
...
private String value20;
}
@Data
@Builder
public class DomainEntity {
private int id;
private String value1;
private String value2;
...
private String value15;
}
public class Converter {
public static DomainEntity fromVO1(VO1 vo1) {
return DomainEntity.builder.id(vo1.getId())
.value1(vo1.getValue1())
.value2(vo1.getValue2())
...
.value15(vo1.getValue15())
.build();
}
public static DomainEntity fromVO2(VO2 vo2) {
return DomainEntity.builder.id(vo2.getId())
.value1(vo2.getValue1())
.value2(vo2.getValue2())
...
.value15(vo2.getValue15())
.build();
}
}
现在我在“转换器”中有重复的代码,我想消除它们。当然我知道我可以使用继承来删除它。不过我也想使用“Lombok”,因为这些类有很多属性。并且使用继承使得“Lombok”的使用变得更加困惑。有谁知道解决这种情况的优雅方法?
谢谢。
最佳答案
我使用继承尝试了你的示例,我不觉得代码变得更困惑,我错过了什么吗?
对于继承,您可以使用实验性的 @SuperBuilder
package lombok;
@Getter
@Setter
@SuperBuilder
public class BaseVO {
private String s1;
private String s2;
private String s3;
private String s4;
private String s5;
private String s6;
private String s7;
private String s8;
private String s9;
}
package lombok;
@Getter
@Setter
@SuperBuilder
public class VO1 extends BaseVO{
private String vo1Specific;
}
package lombok;
@Getter
@Setter
@SuperBuilder
public class VO2 extends BaseVO {
private String vo2Specific;
}
package lombok;
@Builder
@ToString
public class DomainEntity {
private String s1;
private String s2;
private String s3;
private String s4;
private String s5;
private String s6;
private String s7;
private String s8;
private String s9;
private String specific;
}
package lombok;
import lombok.DomainEntity.DomainEntityBuilder;
public class Converter {
public static <T extends BaseVO> DomainEntity fromVO(T basevo) {
DomainEntityBuilder builder = DomainEntity.builder();
builder.s1(basevo.getS1()).s2(basevo.getS2()).s3(basevo.getS3());
if (basevo instanceof VO1) {
VO1 vo1 = (VO1) basevo;
builder.specific(vo1.getVo1Specific());
}
if (basevo instanceof VO2) {
VO2 vo1 = (VO2) basevo;
builder.specific(vo1.getVo2Specific());
}
return builder.build();
}
}
package lombok;
public class App {
public static void main(String[] args) {
VO1 vo1 = VO1.builder().s1("VO1S1").vo1Specific("VO1 specific property").build();
VO2 vo2 = VO2.builder().s1("VO2S1").vo2Specific("VO2 specific property").build();
DomainEntity d1 = Converter.<VO1>fromVO(vo1);
System.out.println(" d1 " + d1);
DomainEntity d2 = Converter.<VO2>fromVO(vo2);
System.out.println(" d2 " + d2);
}
}
关于java - 如何消除 2 个不同类的 util 类上的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054629/
我在这个网站上发布的代码有这个问题 https://developers.google.com/drive/quickstart-cs是 Google Drive 快速入门的开发人员站点。我按照网站上
我正在尝试制作一个非常简单的 Kafka Producer,目前正在关注 producer example除了我的制作人没有分区程序类。 将所需文件导出到 jar 后,我将它们传输到我的 Linux
问题 在java中,我有一个“Util项目”,在进行单元测试时使用另一个“Mock项目”。 我的问题是“模拟项目”也使用“Util项目”来构建一些模拟对象。 当我使用 Maven 构建项目时,我无法构
据我所知,这些包已经存在很长时间了。但是,我从未见过它们的实际用法。而且这些包似乎不成熟,不再维护。如果是,为什么这些包现在存在? 最佳答案 包裹automata被 scala.xml.dtd 使用,
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 1年前关闭。 Improve this question Co
在java.util.Collections中,有一个方法: public static void fill(List list, T obj) 用第二个参数指定的对象填充第一个参数指定的List。
我不明白它要我做什么。分配给 sentence正在工作: val sentences : java.util.List[CoreMap] = document.get(classOf[Sentence
在我的 React 应用程序中,我想使用一些实用程序。我见过两种不同的方法。第一个是,只是创建函数并将其导出。第二个是,创建一个 Util 类并导出一个对象,这样它就不能被实例化(静态类)。 clas
我有一个 util 类,它接受 String jwtToken 和 Key key 并使用 io.jsonwebtoken.jwts 解码 jwt。 但是,我无法对此进行测试。原因是,我无法模拟公钥并
我有使用目标命名空间的专有架构 xmlns:ax216="http://util.java/xsd" 这给我带来了从 java (java.util.xsd) 开始生成禁止的(由 Java 安全管理器
我正在阅读集合以查看 Javadocs 中的实现层次结构。 Collections声明为public class Collections extendds Object Collection声明为pu
我正在使用 Spring-boot 应用程序,我可以在其中连接 Azure 应用程序配置。但是当我尝试使用内容类型应用程序/JSON 读取值时出现错误。 我的Java类 @ConfigurationP
我正在使用 Spring-boot 应用程序,我可以在其中连接 Azure 应用程序配置。但是当我尝试使用内容类型应用程序/JSON 读取值时出现错误。 我的Java类 @ConfigurationP
我在使用格式说明符时遇到问题。这是否意味着我正在使用 %d? public static void main(String[] args) { double y, x; for (x =
鉴于此代码 import java.util.Iterator; private static List someList = new ArrayList(); public static void
我正在 HackerEarth 解决问题,我无法弄清楚为什么我的程序在命令行上正确运行并给出正确的结果,但在代码编辑器上运行时却给出 java.util.NoSuchElementException
我正在尝试使用以下代码使用对象列表列表中的数据填充tableModel readExcel.readSheet(0): TableModel tableModel = new DefaultTabl
java.util.Set 、 java.util.List 和其他 Collection 接口(interface)不可序列化。需要一个简单、直接的解决方案来在可序列化的 POJO 中使用它。 pu
我试图从 servlet 返回数据库搜索结果的 ArrayList 以显示在 jsp 页面上。 在servlet中设置arraylist作为请求的属性,并将请求转发到jsp页面。当我尝试在 jsp 页
我是android新手,最近我试图从firebase中提取数据到recyclerview/cardview中以垂直布局显示数据,它显示将Hashmap转换为Arraylist的错误,其中代码是:
我是一名优秀的程序员,十分优秀!