我有这样的问题 - 有一个抽象类,以及从该类继承的许多类。我有作为非抽象类的参数对象的函数。它必须返回非抽象类的对象,但我知道在运行时是哪个。有任何想法吗?
这里的示例代码,它的样子:
public abstract class Shape {
int x, y;
void foo();
}
public class Circle extends Shape {
int r;
void bar();
}
public class Square extends Shape {
int a;
void bar();
}
在这两个类中,方法 bar() 做同样的事情。现在要做这样的事情:
/* in some other class */
public static Shape iHateWinter(Shape a, Shape b) {
Random rnd = new Random();
Shape result;
/*
btw. my second question is, how to do such thing:
a.bar(); ?
*/
if(rnd.nextInt(2) == 0) {
/* result is type of a */
} else {
/* result is type of b */
}
感谢帮助。