我有一個抽象的模板方法: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