gpt4 book ai didi

java - 为已实例化的子类对象初始化父类(super class)值

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:35 24 4
gpt4 key购买 nike

class SubClass extends SuperClass {
int a;
int b;
public int getA() {
return this.a
}
public int getB() {
return this.b
}
public void setA(int a) {
this.a = a
}
public void setB() {
this.b = b
}
}

class SuperClass {
int c;
public int getC() {
return this.c
}
public void setC(int c) {
this.c = c
}
}

假设我已经有一个已初始化的 SubClass 对象,但 SuperClass 变量未初始化,如何初始化该 SubClass 对象的 SuperClass 变量。

例如:函数返回一个 SubClass 对象,其中 a = 10b = 10c 未设置(因此为 0)。我有一个带有 c = 30SuperClass 对象。除了手动设置 SuperClass 对象的每个值之外,如何初始化 SubClass 对象以使其具有 c = 30

最佳答案

这只能通过反射来完成:

import java.lang.reflect.Field;

public class Test {
public static void main(String[] args) throws IllegalAccessException {
SubClass subClass = new SubClass();
subClass.a = 10;
subClass.b = 10;

SuperClass superClass = new SuperClass();
superClass.c = 30;

for (Field field : SuperClass.class.getDeclaredFields()) {
field.set(subClass, field.get(superClass));
}

System.out.println(subClass.c); // prints out 30
}

}

class SubClass extends SuperClass {
int a;
int b;
}

class SuperClass {
int c;
}

但是,我建议您不要使用这种方法,而只在子类中实现 merge(SuperClass superClass) 方法:

class SubClass extends SuperClass {
int a;
int b;

void merge(SuperClass superClass) {
this.c = superClass.c;
}
}

关于java - 为已实例化的子类对象初始化父类(super class)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42383027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com