为什么我需要在这个 Java 示例中强制转换 HttpURLConnection?
Why do I need to cast HttpURLConnection in this Java example?
我正在阅读 Java 编程面试公开这本书。他们提供了这个代码示例,我不明白:
@Test
public void makeBareHttpRequest() throws IOException {
final URL url = new URL("http", "en.wikipedia.org", "/");
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
final InputStream responseInputStream = connection.getInputStream();
final int responseCode = connection.getResponseCode();
final String response = IOUtils.toString(responseInputStream);
responseInputStream.close();
assertEquals(200, responseCode);
System.out.printf("Response received: [%s]%n", response);
}
是否有关于何时需要转换变量的一般规则(在右侧)?为什么 HttpURLConnection 在这里被强制转换为右侧:
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
但是responseInputStream这里不需要在右边强制转换:
final InputStream responseInputStream = connection.getInputStream();
Java 程序员如何知道何时进行这种转换,何时不进行?
A URL
可以是任何类型的方案,例如ftp、http、https、文件等
因此,如果您打算执行 HTTP 操作,则必须将其转换为 HttpURLConnection
看下一行,正在设置请求方法:connection.setRequestMethod("GET");
这是http请求特有的
您不需要强制转换 responseInputStream
因为 IOUtils
可以使用 InputStream
抽象的实例 class.
在此程序中,您转换为 HttpURLConnection
,因为您需要使用在 HttpURLConnection
中可用的方法,而在其父 classes 中不可用,方法 setRequestMethod()
.
你 可以 这样做是因为你知道你的 URL 是一个 HTTP URL,因此 URLConnection
对象将是从它返回的将是 HttpURLConnection
.
您不需要转换 connection.getInputStream()
的结果,因为它 returns InputStream
并且您不需要 InputStream
中未定义的任何方法。
通常,您使用 class 来提供您需要的操作 - 如果您知道您得到的结果可以转换为 class。
我正在阅读 Java 编程面试公开这本书。他们提供了这个代码示例,我不明白:
@Test
public void makeBareHttpRequest() throws IOException {
final URL url = new URL("http", "en.wikipedia.org", "/");
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
final InputStream responseInputStream = connection.getInputStream();
final int responseCode = connection.getResponseCode();
final String response = IOUtils.toString(responseInputStream);
responseInputStream.close();
assertEquals(200, responseCode);
System.out.printf("Response received: [%s]%n", response);
}
是否有关于何时需要转换变量的一般规则(在右侧)?为什么 HttpURLConnection 在这里被强制转换为右侧:
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
但是responseInputStream这里不需要在右边强制转换:
final InputStream responseInputStream = connection.getInputStream();
Java 程序员如何知道何时进行这种转换,何时不进行?
A URL
可以是任何类型的方案,例如ftp、http、https、文件等
因此,如果您打算执行 HTTP 操作,则必须将其转换为 HttpURLConnection
看下一行,正在设置请求方法:connection.setRequestMethod("GET");
这是http请求特有的
您不需要强制转换 responseInputStream
因为 IOUtils
可以使用 InputStream
抽象的实例 class.
在此程序中,您转换为 HttpURLConnection
,因为您需要使用在 HttpURLConnection
中可用的方法,而在其父 classes 中不可用,方法 setRequestMethod()
.
你 可以 这样做是因为你知道你的 URL 是一个 HTTP URL,因此 URLConnection
对象将是从它返回的将是 HttpURLConnection
.
您不需要转换 connection.getInputStream()
的结果,因为它 returns InputStream
并且您不需要 InputStream
中未定义的任何方法。
通常,您使用 class 来提供您需要的操作 - 如果您知道您得到的结果可以转换为 class。