MyClass<Integer> myObject = new <String> MyClass<>("");
это просто
MyClass<Integer> myObject = new <String> MyClass<Integer>("");
, то есть вы 1. создаете экземпляр MyClass 2. вызываете конструктор со String в качестве параметра типа:
<String> MyClass(String t) {
// ...
}
Оператор diamond не имеет ничего общего с конструктором, так как он не "выводит тип, переданный конструктору", но выводит тип, переданный всему классу.
О, и я думаю, чтоbacktick в учебном примере , вероятно, является типографской ошибкой.:)