【发布时间】:2010-08-26 10:13:10
【问题描述】:
简单地说:我希望下面的代码打印“sub”:
Element e = new SubElement();
print(e);
...
private static void print(Element e) {
System.out.println("e");
}
private static void print(SubElement e) {
System.out.println("sub");
}
我不想更改打印(元素 e)。所以没有什么像
private static void print(Element e) {
if (e instanceof SubElement) {
print((SubElement) e);
} else {
System.out.println("e");
}
}
我想做的是
print(e.getClass().cast(e));
自动将其强制转换为真正的子类并强制系统进入 print(SubElement e)。这有可能吗?
【问题讨论】:
-
如果你有一个静态方法,它接受一个或多个对象作为参数,你应该考虑使该方法成为实例方法。这简化了您的代码,并且很可能简化了您的逻辑。静态方法最适合用于基元,以及您无法更改的类,例如 String 或 byte[]。
标签: java casting virtual-functions visitor-pattern