gpt4 book ai didi

java - 如何遵循 Java 对象 setter 中的 DRY?

转载 作者:行者123 更新时间:2023-12-02 04:31:53 25 4
gpt4 key购买 nike

import java.util.HashMap;
import java.util.Map;

public class parent {
}

public class child1 extends parent {
private String id;
private String name;
// getter & setter
}

public class child2 extends parent {
private String id;
private String name;
// getter & setter
}

public class demo {
public child1 copytoc1(Map m, child1 c) {
c.setid(m.get("id"));
c.setName(m.get("name"));
}

public child2 copytoc2(Map m, child2 c) {
c.setid(m.get("id"));
c.setName(m.get("name"));
}

public static void main(String args[]){
demo d =new demo();
Map m=new HashMap();
m.set("id","1");
m.set("name","1name");
d.copytoc1(m,new child1);
m.set("id","2");
m.set("name","2name");
d.copytoc1(m,new child2);
}
}

我想避免绑定(bind)对象类型的 copytoc1copytoc2 方法想要编写通用复制方法,例如 public T copy(Map m, T t ) 但无法使其工作。这里简单介绍一下如何避免 DRY。

注意:我使用的是jdk7

最佳答案

您不会重复自己不为不同的 child 开设不同的类(class)

类是对象的类型。您可以通过拥有一种类型子项的多个实例来拥有更多子项。

这是您的代码版本,它可以编译并执行您想要执行的操作:

import java.util.HashMap;
import java.util.Map;

public class Demo {
public static class parent {
}

public static class child {
private String id;
private String name;
}

public void copyToChild(Map<String, String> m, child c) {
c.id = m.get("id");
c.name = m.get("name");
}

public static void main(String args[]) {
Demo d = new Demo();
Map<String, String> m = new HashMap<>();
m.put("id", "1");
m.put("name", "1name");
d.copyToChild(m, new child());
m.put("id", "2");
m.put("name", "2name");
d.copyToChild(m, new child());
}
}

关于java - 如何遵循 Java 对象 setter 中的 DRY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com