如何将Java类升级为扩展类?

问题描述 投票:0回答:1

我有一个简单的问题。我有一个大班:

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。

java inheritance extends
1个回答
0
投票

首先,这里没有一个简单的问题。如果你有一个类,其中有大量这样的属性,然后你要对其进行子类化,那么你很有可能遇到一个大的design问题。

但是,要回答您提出的问题,您需要做两件事。

  1. Base
  2. 中创建一个“复制”构造函数
  3. UpgradedBase
  4. 中创建“升级”构造函数

对于复制构造函数,您有:

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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.