Как создать дополнительные методы для Типов

Это глупый код. Каждый класс в Java расширяет класс Object. Не нужно вводить это явно

16
задан Robert Harvey 4 December 2009 в 17:21
поделиться

4 ответа

Короткий ответ: это невозможно; методы расширения должны работать с экземпляром чего-либо.

20
ответ дан 30 November 2019 в 21:36
поделиться

Как указано в принятом ответе, Вы не можете. Однако при условии, что у Вас есть дополнительный метод, который можно назвать от случая 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);

я боюсь, что это является лучшим, Вы можете сделать...

0
ответ дан 30 November 2019 в 21:36
поделиться

Вы не можете создавать методы расширения, которые применяются к самому типу. Их можно вызывать только в экземплярах типа.

2
ответ дан 30 November 2019 в 21:36
поделиться

Чтобы использовать метод расширения, вам нужно сделать:

var instance = typeof(MyClass).ParseJson(text);

Токен «MyClass» не является типом instamce внутри себя, но использование typeof даст вам тип для работы. Но чем это лучше, чем:

var instance = JsonUtility.ParseJson<MyClass>(text);

Изменить: На самом деле код метода расширения все равно не будет делать то, что вы хотели. Он всегда будет возвращать объект «Тип», а не экземпляр этого типа.

3
ответ дан 30 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: