6 回答
TA贡献1788条经验 获得超4个赞
给你一个参考方案,另外也可以考虑用泛型来处理。不管 Java 的泛型我不太熟,等其他高人了
class B {}
class B1 extends B {}
class B2 extends B {}
class A {
B data;
B getData() {
return data;
}
void setData(B b) {
data = b;
}
}
class A1 extends A {
B1 data;
B1 getData() {
return (B1) super.getData();
}
void setData(B1 b) {
super.setData(b);
}
void setData(B b) {
if (!(b instanceof B1)) {
throw new ClassCastException();
}
super.setData(b);
}
}
TA贡献1844条经验 获得超8个赞
这个采用泛型可以很好地解决问题
class A<T extends B> {
private T b;
public T getB() {
return b;
}
}
class B {
}
class A1 extends A<B1>{
}
class B1 extends B{}
class A2 extends A<B2>{}
class B2 extends B{}
TA贡献1895条经验 获得超3个赞
不知道这个是不是你要的:
public class B {
}
public class B1 extends B {
}
public class B2 extends B {
}
public class A <T extends B> {
private T data;
public T getData(){ return data;}
public void setData(T data) {
this.data = data;
}
}
public class Main {
public static void main(String[] args) {
A<B1> a1 = new A<B1>();
A<B2> a2 = new A<B2>();
a1.setData(new B1());
a2.setData(new B2());
// .....
}
}
使用泛型,A这边不需要继承结构。
添加回答
举报