我有一个简单的问题。我有一个大班:
public class Base {
public Field1Data field1;
public Field2Data field2;
public Field3Data field3;
// many more fields later...
public Field1234Data field1234;
}
它的字段数量非常多,类型也非常多。
然后我有一个扩展:
public class UpgradedBase extends Base {
public String metadata;
}
我想要一个简洁的方式来编写以下方法:
public static UpgradedBase upgrade(Base baseInstance, String metadata){
/// What I don't know how to write.
}
我有 Lombok,但就代码生成工具而言仅此而已。 上面的
upgrade
方法该怎么写呢?我更喜欢简洁的方法。我正在使用 Java 17。
首先,这里没有一个简单的问题。如果你有一个类,其中有大量这样的属性,然后你要对其进行子类化,那么你很有可能遇到一个大的design问题。
但是,要回答您提出的问题,您需要做两件事。
Base
UpgradedBase
对于复制构造函数,您有:
class Base {
constructor(Base b) {
this (/* whatever parameters are needed */);
/*
* Whatever approach you want to copy everything over...
* you could do it with Reflection if you like
*/
}
}
那么你就会:
public class UpgradedBase extends Base {
public String metadata;
public static UpgradedBase upgrade(Base baseInstance, String metadata){
super(baseInstance);
this.metadata = metadata
}
}