java—动态创建不同的请求对象

9wbgstp7  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(431)

是否可以从超集对象动态创建不同的对象。例如:
超集对象:

class Z { // some attributes }

class A {
      String a, m, f, c;
      int x,y,z;
      Z z;
}

需要从动态创建的子对象:

class B {
      String b; // mapped with value of a of A
      String d; // mapped with value of m of A
      int a; // mapped with value of x of A
      int b; // mapped with value of y of A
}

class C {
      String y; // mapped with value of f of A
      String z; // mapped with value of c of A
      int z; // mapped with value of z of A
      Z b; // mapped with value of z of A
}

我想创建这样不同的子类,这些子类有不同的成员,这些成员是父类a的子集。
我知道为每个想要的子对象创建 backbone 类,然后用超集对象的值进行Map的常规方法。相反,有一种方法可以动态地将不同的父类成员值Map到子对象成员。

fd3cxomn

fd3cxomn1#

我假设上述信件是固定的。我是说,b区 Class B 总是取a的值。您可以通过相应设计的构造函数来实现这一点。代码如下:,

class B {
    String b; // mapped with value of a of A
    String d; // mapped with value of m of A
    int a; // mapped with value of x of A
    int b; // mapped with value of y of A

    public B (A a) {
        this.b = A.a // A.getA() alternatively 
        this.d = A.m // A.getM() alternatively 
        this.a = A.x // A.getX() alternatively 
        this.b = A.y // A.getY() alternatively 
    }

}

现在,上面发生的是 B 提供a并将a的预期值Map到b的预期字段。注意,无论b是否是a的子级,都可以这样做。所以,假设你需要有b作为a的孩子,你可以这样做:

class B extends A{
    String b; // mapped with value of a of A
    String d; // mapped with value of m of A
    int a; // mapped with value of x of A
    int b; // mapped with value of y of A

    public B (A a) {
        this.b = A.a // A.getA() alternatively 
        this.d = A.m // A.getM() alternatively 
        this.a = A.x // A.getX() alternatively 
        this.b = A.y // A.getY() alternatively 
    }

}

干杯,
d

相关问题