У меня есть следующий класс:
abstract class MyAbstract<T>
{
T val_;
MyAbstract(T val)
{
val_ = val;
}
T getVal()
{
return val_;
}
}
Я бы хотел, чтобы у моего абстрактного класса было другое тело для T = String, например (несите меня):
abstract class MyAbstract<T extends String>
{
T val_;
T upperVal_;
MyAbstract(T val)
{
val_ = val;
upperVal_ = val.toUpperCase();
}
T getVal()
{
return upperVal_;
}
}
Результат, которого я пытаюсь достичь, заключается в том, что если я расширю MyAbstract, будет использована вторая версия, в противном случае - первая.Это возможно и как?Спасибо!
Обновление: я хочу иметь возможность расширять тот же абстрактный класс и делать такие вещи, как:
Type1 extends MyAbstract<Integer>...
и
Type2 extends MyAbstract<String>...
(обратите внимание, что я используюMyAbstract
для обоих типов)