У меня есть абстрактный метод шаблона: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"
}
Как я могу напечатать «Я имею дело со строкой» без использования InstanceOf в DoSomething (объект Object)?
Thanks,
С точки зрения ОО, я бы подумал, почему мне нужна такая конструкция. Экземпляры класса Object, не имеют большого количества поведения, зачем передавать их в качестве параметров? –
То же, что сказал Хорст. Если вы собираетесь определить свой базовый класс для работы с типом «Объект» в его сигнатурах метода, вы действительно не должны предполагать обработку определенного типа. Вместо этого я бы предложил определить иерархию классов для MyTemplate с помощью генериков. – whaley