我想创建一个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中的一些东西包括这些设施?这将有助于我在开始一个新项目时减少我们的util包的大小:)。
4条答案
按热度按时间lx0bsm1f1#
这种抱怨一定很常见,因为Java(从1.7开始)就引入了
URI
类,你可以用以下方法构造它:new URI()
,引发检查异常URI.create()
,这将引发未检查的异常对于像您这样已知来自安全源的URI/URL,您可以使用
URI.create()
变体,而不必担心捕获异常,因为您知道它不会被抛出。不幸的是,有时候你不能使用URI,但你仍然需要一个URL,没有一个标准的方法(到目前为止我已经找到了)可以将URI转换成一个URL,而不会抛出一个检查异常。
s4n0splo2#
既然其他人都只是在评论,我会提供答案,那就是不,没有标准的方法来做你想要的:)
另外,既然你提到了apache commons和google guava,我想指出的是,“标准”这个词也不完全正确......也许你想要开源、免费或者只是第三方。
dpiehjr43#
只是把这个放在混合中--完成同样的事情有很多风格上的变化,这个在静态init块中初始化,但是它不能是final。
gupuwyp24#
您不能扩展URL,因为它是最终的,但是您可以创建一个新的类,可能命名为MyURL,并让它将URL方法代理给私有(或受保护)URL成员。
下面是这样一个类的开始: