uri
は次の2つの方法で作成できます。
URI uri = new URI("https://www.google.com/");
または、
URI uri = URI.create("https://www.google.com/");
どっちがいいのかしら。パフォーマンスの違いに気づかず、ドキュメントを読みましたが、理解するのが少し難しかったです。これについての洞察は大歓迎です。
ドキュメントを読むと、使い方が異なります。
指定された文字列を解析してURIを作成します。この便利なファクトリメソッドは、{@ link URI(String)}コンストラクタを呼び出した場合と同じように機能します。コンストラクターによってスローされた{@link URISyntaxException}はキャッチされ、新しい{@link IllegalArgumentException}オブジェクトにラップされてからスローされます。
このメソッドは、指定された文字列が正当なURIであることがわかっている状況で使用するために提供されます、たとえば、プログラム内で宣言されたURI定数の場合、そのため、プログラミングエラーと見なされますそのように解析しない文字列。 {@link URISyntaxException}を直接スローするコンストラクターは、URIがユーザー入力またはエラーが発生しやすい他のソースから構築されている状況で使用する必要があります。
@param str URIに解析される文字列
* @return The new URI * * @throws NullPointerException * If {@code str} is {@code null} * * @throws IllegalArgumentException * If the given string violates RFC 2396 */
public static URI create(String str) {
try {
return new URI(str);
} catch (URISyntaxException x) {
throw new IllegalArgumentException(x.getMessage(), x);
}
}
_URI.create
_は呼び出しをコンストラクターに委譲するため、違いはありません。唯一の真の違いは、URI.create(String)
は、コンストラクターがスローするURISyntaxException
(チェック済み例外)をIllegalArgumentException
(チェックなし例外)にラップするため、チェック済み例外を処理したくない場合は、URIを呼び出すだけです。 .create(文字列)
JDKのコードの一部を次に示します。
_public static URI create(String str) {
try {
return new URI(str);
} catch (URISyntaxException x) {
throw new IllegalArgumentException(x.getMessage(), x);
}
}
_