public GenericClass(String argument)
Проблема в том, как компилятор должен знать, что String
равно T
?Нет никакой связи между параметром и параметром универсального типа, и нет способа указать его.Вы можете использовать
public GenericClass(T argument)
и создать его с
new GenericClass<>("foo");
, но это позволит создать экземпляр GenericClass
с объектом любого типа.
Вы можетеПримерно достигните того, что вы хотите, используя наследование, хотя вам нужно ввести второй класс:
class GenericClass<T extends Serializable> {
public GenericClass() {
}
}
class StringClass extends GenericClass<String> {
public StringClass(String argument) {
}
}
Вы можете ввести интерфейс, и оба класса реализуют его, если вы хотите избежать использования наследования.Вот что я сделаю.