Есть ли утилита для анализа URL без исключенного исключения в java?

РЕДАКТИРОВАТЬ: Кажется, я в первый раз прозвучал слишком раздраженно, вот передел.

Я хотел бы создать константу URL, например

public static final URL REMOTE_URL = new URL("http://example.com/");

Но я не могу с тех пор, как конструктор выбросит проверенное исключение. Прямо сейчас я использую

public static final URL REMOTE_URL = createUrl("http://example.com/");

private static URL createUrl(String url) {
    try {
        return new URL(url);
    } catch (MalformedURLException error) {
        throw new IllegalArgumentException(error.getMessage(), error);
    }
}

Но он чувствует, как изобретать колесо. Я не могу быть единственным, кто хочет использовать константу URL-адреса нет? Поэтому мне было интересно, есть ли сторонняя библиотека инструментов (например, guava или apache-commons или что-то еще, что-то) или даже лучше, что-то в стандартной Java, которое включает в себя эти возможности? Это поможет мне, когда мы начнем новый проект, уменьшив размер нашего пакета утилиты:).

Ответ 1

Поскольку все остальные просто комментируют, я дам ответ, который заключается в том, что нет стандартного способа делать то, что вы хотите:)

Кроме того, поскольку вы указываете apache commons и google guava, я хотел бы указать, что стандарт - это не совсем то, что нужно использовать... возможно, вам нужен open-source, free или просто сторонний.

Ответ 2

Вы не можете расширять URL-адрес, потому что он является окончательным, но вы можете создать новый класс, возможно, с именем MyURL, и попросить его прокси URL-методы для частного (или защищенного) URL-адреса.

Вот начало такого класса:

package blammo.url;

import java.net.MalformedURLException;
import java.net.URL;

public class MyURL
{
    private URL containedURL;

    public MyURL(final String spec)
    {
        try
        {
            containedURL = new URL(spec);
        }
        catch (MalformedURLException exception)
        {
            throw new RuntimeException(exception);
        }
    }

    public String getAuthority()
    {
        return containedURL.getAuthority();
    }

    // required for stuff that needs a URL class.
    public URL getContainedURL()
    {
        return containedURL;
    }
}

Ответ 3

Просто бросая это в микс - там много стилистических вариаций для выполнения одного и того же, этот один инициализируется в статическом блоке init, но он не может быть окончательным.

public static URL g_url;

static {        

    try {
        g_url = new URL("http://www.example.org");
    } catch (Exception e) {
        e.printStackTrace();
    }
}