Вы не можете сделать это без отражения, потому что тип T
стирается во время выполнения (это означает, что он будет уменьшен до его нижней границы, которая составляет Base
).
Поскольку у вас есть доступ к Class<T>
, вы можете сделать это с отражением, однако:
return (String) clazz.getMethod("getStaticName").invoke(null);
Обратите внимание, что я считаю такой код запахом кода, и он довольно хрупкий. Не могли бы вы сказать нам, зачем вам это нужно?