2012-04-11 7 views
2

私はhpConオブジェクトがで宣言されている理由を誰かが説明してくださいでした... HttpURLConnectionの使用を説明する以下のコードが含まれている教科書の使用によりのJavaのHttpURLConnectionクラスプログラム

class HttpURLDemo { 
    public static void main(String args[]) throws Exception { 
     URL hp = new URL("http://www.google.com"); 
     HttpURLConnection hpCon = (HttpURLConnection) hp.openConnection(); 

     // Display request method. 
     System.out.println("Request method is " + hpCon.getRequestMethod()); 
     } 
    } 

をJavaの勉強次のように...

HttpURLConnection hpCon = (HttpURLConnection) hp.openConnection(); 

の代わりに、このようにそれを宣言...

HttpURLConnection hpCon = new HttpURLConnection(); 

教科書の著者が、私は本当に理解していない以下の説明を、提供...

JavaはHTTP接続のサポートを提供するのURLConnectionのサブクラスを提供します。 このクラスはHttpURLConnectionと呼ばれます。上記の の方法でHttpURLConnectionを取得するには、URLオブジェクトでopenConnection()を呼び出しますが、結果を にHttpURLConnectionにキャストする必要があります。 (もちろん、あなたが実際に HTTP接続を開いていることを確認する必要があります。)あなたはHttpURLConnectionクラスオブジェクトへの参照を取得したら、 あなたが宣言そのURLConnectionの

答えて

1

java.net.URLConnectionは、さまざまなプロトコル(ftphttpなど)を介してさまざまなタイプのサーバーとの通信を容易にする抽象クラスです。

プロトコル固有サブクラスは、SUNのパッケージ内部に隠されており、これらの隠されたクラスは、プロトコルの具体的な実装を担当しています。

例では、URLはURLを解析してhttp://www.google.comであるため、URLクラスの内部ではHTTPハンドラ/サブクラスを使用する必要があることがわかります。
したがって、サーバーへの接続を開くと、hp.openConnection();は、HTTPプロトコルを実装するクラスの具体的なインスタンスを取得します。 HttpURLConnectionのインスタンスが(実際にHTTPURLConnection以来のサブクラスでもabstractであり、あなたが行うことができます理由ですされ、クラス

:。

HttpURLConnection hpCon = (HttpURLConnection) hp.openConnection();はなく、クラスのキャスト例外を取得

だから、Javaの設計とすることができますデザイナーがあなたにこれらのAPIを使用してもらう方法ではないので、お聞きしながらHttpURLConnection hpCon = new HttpURLConnection(hp);を実行してください。

arround URL sとURLConnectionsを使用し、入出力についてのみ心配してください。
残りについて心配する必要はありません。

4

から継承されたメソッドのいずれかを使用することができます

HttpURLConnection hpCon = new HttpURLConnection(); 

接続を開くURLに関する情報は表示されません。

HttpURLConnection hpCon = new HttpURLConnection(hp); 

この方法は、コンストラクタを使用すると、URL "http://www.google.com"への接続をオープンすることを知っているので:これは、あなたが使用する必要がある理由です。

関連する問題