Есть ли утилита для анализа 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();
}
}