Something for the week-end
I used to like overloading methods to provide a default behaviour for any object and a specialised one for some select types. That’s possible when the language supports multiple dispatch. It is not possible in Java:
import junit.framework.TestCase;
public class TestOverloading extends TestCase {
public static final class OverloadedClass {
public String thisIsA(final Object o) {
return "Object";
}
public String thisIsA(final String s) {
return "String";
}
}
public void testIsCallingObjectFromObject() {
final OverloadedClass tested = new OverloadedClass();
final Object value = new Object();
assertEquals("Object", tested.thisIsA(value));
}
public void testIsCallingObjectFromString() {
final OverloadedClass tested = new OverloadedClass();
final Object value = new String();
assertEquals("Object", tested.thisIsA(value));
}
public void testIsCallingStringFromString() {
final OverloadedClass tested = new OverloadedClass();
final String value = new String();
assertEquals("String", tested.thisIsA(value));
}
}
