2015-03-30 2 views
-2

Я новичок в java, и я по-прежнему имею дело с основными темами. Я не могу понять, как работают следующие строки при получении нового соединения HttpURLC, вызывая URL.openConnection() и передавая результат в HttpURLConnection.Кастинг URL-объекта для HttpURLConnection

URL url = new URL("http://www.android.com/"); 
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

Как вы можете создать экземпляр HttpURLConnection с объектом URL, если класс URL не наследует от HttpURLConnection?

Согласно ссылке Java API это иерархия обоих классов:

java.lang.Object ⇒ java.net.URLConnection ⇒ java.net.HttpURLConnection

java.lang. Объект ⇒ java.net.URL

насколько я знаю, литье используется следующим образом:

в этом случае HttpURLConnection является от URLConnection и Object. Следовательно, HttpURLConnection является URLConnection и также является объектом.

Обратное не обязательно верно: URLConnection может быть HttpURLConnection, но это необязательно. Поэтому вы должны использовать кастинг.

Но класс URL и HttpURLConnection НЕ связаны. Только через класс OBJECT.

Это то, что я не могу понять. Кто-нибудь может мне помочь?

Заранее спасибо.

+0

есть метод call 'openConnection()' проверить, что он возвращает в документации ... – Selvin

ответ

4

Вы не литье URL, вы литье возвращаемого значения openConnection() (URLConnection), который глубоко вниз HttpURLConnection, когда адрес начинается с http://.

Смежные вопросы