1

「 http://stackoverflow.comStringのような値を持つtype のフィールドを含むオブジェクトがあります。

を取る必要があるメソッドがありますURL。だから私はそれを取り、それからからStringを構築するメソッドでそれをラップしています(これはどうやらトライキャッチでラップする必要があります...)URLString

もっと簡単な方法があるはずです。URLオブジェクトに値をではなくとして格納することは可能Stringですか? 私はこれを試しましたpublic URL url = "http://stackoverflow.com";

それらの線に沿って何かをすることは可能ですか?私が最初にやっていたことよりも良い方法はありますか?

ありがとう

オリジナル:

public String urlString = "http://stackoverflow.com";


public boolean myMethod(String urlString) {
 try {
        URL newURL = new URL(urlString);
        useUrl(newURL);
 } catch (MalformedURLException e) {
                e.printStackTrace();
            }

}

うまくいきませんが、より良いようです:

public URL url = "http://stackoverflow.com";


public boolean myMethod(URL url) {
        useUrl(url);
  }
4

7 に答える 7

0

追加の魔法として、Spring および Apache 内の URIBuilder を調べてみることをお勧めします。

URIBuilder uriBuilder = URIBuilder.fromUri( "http://stackoverflow.com/" );
URI uri = uriBuilder.build();
于 2013-04-24T20:43:16.780 に答える
0

少し短くすることもできますが、新しい URL オブジェクトを作成する必要があります。

public boolean myMethod(String urlString) {
 try {

        useUrl(new URL(urlString));
 } catch (MalformedURLException e) {
                e.printStackTrace();
            }

}
于 2013-04-24T20:41:05.193 に答える
0

あなたが何をしたいのか理解できたかどうかわかりませんが、これは役に立ちますか?

class SomeClass {
  private final String urlString = "http://stackoverflow.com";
  public URL url;

  public SomeClass() {
     try {
        this.url = new URL(this.urlString); // suppose the URL is correct
     } catch (MalformedURLException e) {
        e.printStackTrace();
     }
  }
}
于 2013-04-24T20:39:36.380 に答える
0

それをしてはいけない。URL は、定義上、不正な形式にすることはできません。したがって、問題が try/catch を回避することである場合、クラスはString代わりに を使用し、必要に応じて内部的にURL変換する必要があります。URL

URL に安全に変換できる新しいオブジェクトを作成できます。

private class UnsafeURL {
    private String url;

    public UnsafeURL(String url){
        this.url = url;
    }

    public URL toURL() throws MalformedURLException {
        return new URL(url);
    }
}
于 2013-04-24T20:46:35.373 に答える
0
public class Foo {  

  private URL test;
    {
        try {
            test = new URL("http://www.google.com");
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }
   public Foo() {

   }
}

また

public class Foo {  

  private URL test;

   public Foo() {
        try {
            test = new URL("http://www.google.com");
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
   }
}

どちらでも動作します。最善の方法は、コンストラクターで行うことです。

于 2013-04-24T20:48:23.537 に答える