java 使用Instancio,如何忽略超类私有属性

6jygbczu  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(106)

我有一个类B,它扩展了一个abstractA。类A有一个在构造函数中初始化的私有成员。

public abstract class A {

  private String _dtoType;
  private String uuid = UUID.randomUUID().toString();

  public A() {
     this._dtoType = this.getClass().getSimpleName();
  }

  public String getDtoType() { return this._dtoType; }
  public String getUuid() { return this.uuid; }

}
public class B extends A {

  private String accountNumber;
  private String name;

  private C propC;
  private List<D> propDs;

  public B() {
     super();
  }

}

假设CD也扩展了A
我想忽略所有类的_dtoTypeuuid。比如说,如果我正在创建一个B的示例:

B item = Instancio.of(B.class)
                .generate(field(B::getAccountNumber), gen -> gen.text().pattern("#d#d#d#d#d#d#d#d"))
                .ignore(all(field("_dtoType")))
                .ignore(all(field("uuid")))
                .subtype(all(C.class), C.class)
                .subtype(all(D.class), D.class)
                .create();

但是,我得到一个错误:

Reason: invalid field '_dtoType' for class B
j5fpnvbx

j5fpnvbx1#

看起来我必须具体并在ignore中引用抽象类A

.ignore(all(field(A.class, "_agoType")))
                .ignore(all(field(A.class,"uuid")))

相关问题