14

編集: 最初はイライラしすぎたようですが、ここで作り直します。

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 定数を使用したいのは私だけではないでしょうか? それで、サードパーティのツールボックスライブラリ(グアバやApache-commonsなど)があるかどうか、またはこの機能を含む標準Javaの何かがあるかどうか疑問に思っていましたか?これは、util パッケージのサイズを小さくして新しいプロジェクトを開始するときに役立ちます :) 。

4

4 に答える 4

3

他の誰もがコメントしているだけなので、あなたが望むことを行う標準的な方法はないという答えを提供します:)

また、apache commons と google guava について言及しているため、標準という言葉も正確に使用するのに適切ではないことを指摘しておきます....おそらく、オープンソース、無料、または単にサードパーティが必要な場合があります。

于 2013-09-26T18:36:39.793 に答える
1

これをミックスに投入するだけです-同じことを達成するための多くのスタイルのバリエーションがあります.これは静的な初期化ブロックで初期化しますが、最終的なものにすることはできません.

public static URL g_url;

static {        

    try {
        g_url = new URL("http://www.example.org");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
于 2013-09-26T19:22:02.843 に答える
0

最終的な URL であるため、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;
    }
}

于 2013-09-26T18:41:24.773 に答える