Универсальное ограничение к ValueTypes, Strings и Nullable ValueTypes

Вы используете метод getElementsByTagName, который возвращает объект org.w3c.dom.NodeList. В случае отсутствия элементов с данным именем NodeList.getLength метод возвращает 0. Итак, код ниже безопасно получает текстовое содержимое:

NodeList locations = document.getElementsByTagName("location");
if (locations.getLength() > 0) {
    String textContent = locations.item(0).getTextContent();
    System.out.println(textContent);
}

Или вы можете создать метод, который будет это делать:

public static String getFirstTextContent(Document node, String tagName) {
    NodeList locations = node.getElementsByTagName(tagName);
    if (locations.getLength() > 0) {
        return locations.item(0).getTextContent();
    }

    return "";
}

и ваш код может выглядеть так: ]

6
задан antonioh 8 April 2009 в 08:49
поделиться

1 ответ

Единственное, что я могу придумать, это набор из трех функций (без Выражение <> stuff):

MyGenericFunction<T>(T t)
    where T : struct

MyGenericFunction<T>(T? t)
    where T : struct

MyGenericFunction(string s)

ОБНОВЛЕНИЕ Учитывая, что метод перегружен, я могу предложить:

class Holder
{
    private object value;

    public Holder(object value)
    {
        this.value = value;
    }

    public static implicit operator Holder(DateTime dt)
    {
        return new Holder(dt);
    }

    public static implicit operator Holder(string s)
    {
        return new Holder(s);
    }

    // Implicit conversion operators from primitive types
}

Таким образом, ваш метод становится

MyGenericMethod(Holder h);

Все еще очень громоздким, но, тем не менее, может сработать.

7
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

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