我有一个抽象的模板方法:Java的重载方法
class abstract MyTemplate
{
public void something(Object obj)
{
doSomething(obj)
}
protected void doSomething(Object obj);
}
class MyImpl extends MyTemplate
{
protected void doSomething(Object obj)
{
System.out.println("i am dealing with generic object");
}
protected void doSomething(String str)
{
System.out.println("I am dealing with string");
}
}
public static void main(String[] args)
{
MyImpl impl = new MyImpl();
impl.something("abc"); // --> this return "i am dealing with generic object"
}
如何打印 “我处理字符串” W/O在DoSomething的(obj对象)使用的instanceof?
谢谢,
从OO的角度来看,我会觉得很难,为什么我需要这样的构造。 Object类的实例没有太多的行为,为什么将它们作为参数传递? –
同上Horst说什么。如果您要定义您的基类以在其方法签名中使用类型“对象”,那么您确实不应该假定处理特定的类型。我建议用泛型来定义MyTemplate的类层次结构。 – whaley