【发布时间】:2013-02-17 01:01:24
【问题描述】:
我有这种情况:
public abstract class ClassA{
public ClassA getClassOfSameKind(){
return this.getClass().newInstance();
}
}
public abstract class ClassB extends ClassA{
public void doSomethingSpecial(){
ClassB otherClass = (ClassB) this.getClassOfSameKind();
//do something special that only Class B can do
}
}
你会做不同的事情吗?
【问题讨论】:
-
你很幸运,这并没有像你想象的那样。
-
类型转换本质上并不是糟糕设计的标志。
-
这可能是糟糕的设计,但其中没有演员表。您没有告诉我们您要解决的问题足够多,我们无法告诉您我们会采取哪些不同的做法。
-
我想知道@BrianRoach 是如何知道 OP 的想法的。还有唐罗比,代码确实包含演员表......
-
抱歉,它确实包含演员表。我的其余评论是有效的。
标签: java design-patterns casting