Это глупый код. Каждый класс в Java расширяет класс Object. Не нужно вводить это явно
Короткий ответ: это невозможно; методы расширения должны работать с экземпляром чего-либо.
Как указано в принятом ответе, Вы не можете. Однако при условии, что у Вас есть дополнительный метод, который можно назвать от случая T:
public static T ParseJson<T>(this T t, string s)
Вы могли написать сервисный метод как это:
public static T ParseJson<T>(string s)
where T: new()
=> new(T).ParseJson(s);
И требование это как это:
var t = Utilities.ParseJson<T>(s);
я боюсь, что это является лучшим, Вы можете сделать...
Вы не можете создавать методы расширения, которые применяются к самому типу. Их можно вызывать только в экземплярах типа.
Чтобы использовать метод расширения, вам нужно сделать:
var instance = typeof(MyClass).ParseJson(text);
Токен «MyClass» не является типом instamce внутри себя, но использование typeof даст вам тип для работы. Но чем это лучше, чем:
var instance = JsonUtility.ParseJson<MyClass>(text);
Изменить: На самом деле код метода расширения все равно не будет делать то, что вы хотели. Он всегда будет возвращать объект «Тип», а не экземпляр этого типа.