【发布时间】:2019-03-25 21:15:39
【问题描述】:
情况:
class A {
private int prop = 0;
}
class B extends A {
private int extraProp;
B(int param){
extraProp = param
}
}
如您所见,唯一不同的是向 B 引入了一个额外的属性。
我基本上希望能够将额外的属性添加到 A,同时将其转换为 B。
如果不手动将所有属性从 A 类复制到 B,这是否可行? 像这样
class B extends A {
private final int extraProp;
B(int param){
extraProp = param
}
static B from(A a, int param){
B b = new B(param);
b.prop = a.prop;
return b;
}
}
在这里,我基本上是在克隆类。是否可以使用A的实例并简单地添加新的道具,所以我不必担心手动克隆
我知道这可能通过简单地在 A 上设置额外属性是可选的,但我认为这不是一个好的解决方案。
A a = new A();
B atoB = (B /* WITH NEW PARAM */) A
【问题讨论】:
-
对不起,你的问题很不清楚。你能提供一个你正在尝试做什么的例子吗?
-
static final int INT_CONSTANT是类常量。这意味着B类的每个 实例都共享同一个int 字段。 -
@NicholasK 再次检查,我想我已经尽可能清楚了
-
@zlakad 可能是一个错字,已经消失了