我正在阅读《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 程序员如何知道何时进行这种类型转换,何时不进行?
最佳答案
URL
可以是任何类型的方案,例如ftp、http、https、文件等
因此,如果您打算执行 HTTP 操作,则必须将其转换为 HttpURLConnection
看下一行,正在设置请求方法:connection.setRequestMethod("GET");
这是特定于http请求的
您不需要转换 responseInputStream
,因为 IOUtils
能够使用 InputStream
抽象类的实例。
关于java - 为什么我需要在此 Java 示例中强制转换 HttpURLConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29460996/