我有一个基类说
class A {
private String name;
private String age;
//setters and getters for same
}
Run Code Online (Sandbox Code Playgroud)
和一个儿童班说
class B extends A {
private String phone;
private String address;
//setters and getters for same
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个A的实例,除此之外我还要在B中设置字段,所以代码就像,
A instanceOfA = gotAFromSomewhere();
B instanceOfB = constructBFrom(instanceOfA);
instanceOfB.setPhone(getPhoneFromSomewhere());
instanceOfB.setAddress(getAddressFromSomewhere());
Run Code Online (Sandbox Code Playgroud)
我可以用给定的A实例化B,但我不想这样做,
B constructBFrom(A instanceOfA) {
final B instanceOfB = new B();
instanceOfB.setName(instanceOfA.getName());
instanceOfB.setPhone(instanceOfA.getAge());
return B;
}
Run Code Online (Sandbox Code Playgroud)
相反,我喜欢有一些功能,它具有通用性,足以构造对象,如
public class SomeUtility {
public static <T1, T2> T2 constructFrom(T1 instanceOfT1, Class<T2> className) {
T2 instatnceOfT2 …Run Code Online (Sandbox Code Playgroud)