Основная причина, по которой вывод типового типа не может работать над конструкторами, как вы хотите, потому что класс «MyType» даже не существует, когда все, что вы объявили, это «MyType & lt; T & gt;». Помните, что законно иметь оба:
public class MyType<T> {
}
и
public class MyType {
}
Оба будут законными. Как бы вы устранили ваш синтаксис, если бы вы действительно объявили оба, и оба они объявили конфликтующий конструктор.