Як вже згадували інші,
у Java немає механізму typedef.
Я також не підтримую "підроблені класи" взагалі, але тут не повинно бути загального суворого правила:
Якщо ваш код, наприклад, використовує знову і знову "загальний тип типу", наприклад:
Map<String, List<Integer>>
Ви обов'язково повинні врахувати наявність підкласу для цієї мети.
Ще один підхід, який можна врахувати, це, наприклад, уповільнення у своєму коді:
//@Alias Map<String, List<Integer>> NameToNumbers;
А потім використовуйте у своєму коді NameToNumbers і поставте завдання попереднього компілятора (ANT / Gradle / Maven) для обробки та створення відповідного коду Java.
Я знаю, що для деяких читачів цієї відповіді це може здатися дивним, але саме стільки фреймворків реалізували "анотації" до JDK 5, це те, що робить проект lombok та інші рамки.