Dobrý podvečer,
musel byste mít onu obecnou metodu i v té třídě, a v ní podle typu
volaného parametru převolat příslušnou specializovanou metodu. Tedy
něco jako:
public void move(Object o) {
if (o instanceof Book) {
move(book);
} else if …
}
Záleží na tom, co přesně chcete dělat, někdy se hodí to spojit s
enumem, někdy se vyplatí udržovat si typ třídy v abstraktním předkovi
(místo Object byste měl nějaký abstraktní typ – předchůdce Book i
Pencil) – nemusíte pak typ zjišťovat přes reflexi, někdy se to dá
spojit s generikami (interface pak má jako typový paramter, s jakou
třídou jej budete volat) – v posledním případě by ale návrh tříd musel
vypadat stejně trochu jinak, jednotlivé specializované metody move()
byste musel mít ve zvláštních třídách.
Filip Jirsák
2008/7/14 <[EMAIL PROTECTED]>:
> Dobrý den
>
> mám třídu s několika přetíženými metodami:
>
> public class AlgorithmImpl implements Algorithm{
>
> public void move(Book book){
> ...
> }
>
> public void move(Pencil pencil){
> ...
> }
>
> }
> ------------------------------------------
> Mohu nějak k této třídě napsat rozhranní, tak aby používalo přetížené metody?
>
> Něco takového?
> public interface Algorithm {
>
> public void move(Object o);
>
> }
>
>
> Děkuji
> Tomáš Jurman
>
>
--
Filip Jirsák
[EMAIL PROTECTED]