Więc mam interfejs -częściowe rodzajowych w Javie
public interface GenericTranslator <From, To> {
To translate(From from);
}
i mieć klasę implementującą to
public class TimeToStringTranslator implements GenericTranslator <Time, String> {
String translate(Time time) { ... }
}
Ale teraz chce mieć abstrakcyjną warstwę gdzie input type From
jest Time
// an abstract class with partial generic defined
public abstract class AbstractTimeTranslator<Time, To> implements GenericTranslator<Time, To> {
@Override
To translate(Time time) {
doSomething();
return translateTime(time);
}
protected abstract To translateTime(Time time);
}
// concrete class
public class TimeToStringTranslator extends AbstractTimeTranslator<Time, String> {
String translateTime(Time time) { .... }
}
Czy to możliwe w Javie? Próbowałem, Java traktuje Time
jako nazwą rodzajową w AbstractTimeTranslator
Nie mogę oprzeć się wrażeniu, że ten problem zostałby prawdopodobnie uniknięty, gdyby przestrzegano konwencji jednoliterowych argumentów. – VGR