为什么在此Java示例中需要强制转换HttpURLConnection?

夏洛特斯维尔

我正在阅读《 Java Programming Interviews Exposed》一书。他们提供了此代码示例,我不理解:

@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程序员如何知道何时进行这种类型的转换,何时不进行这种类型的转换?

怀疑论者

在此程序中,您HttpURLConnection之所以会陷入困境,是因为您需要使用该方法HttpURLConnection,该方法在该方法的父类中可用,但在其父类中不可用setRequestMethod()

可以执行此操作,因为您知道您的URL是HTTP URL,因此URLConnection将从其返回对象将是HttpURLConnection

您无需转换的结果,connection.getInputStream()因为它返回InputStream并且您不需要任何未在中定义的方法InputStream

通常,您使用提供所需操作的类-如果您知道将得到的结果强制转换为该类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

双重推导-为什么需要强制转换

来自分类Dev

为什么此代码需要强制转换?

来自分类Dev

为什么需要强制转换 Java 泛型方法参数类

来自分类Java

为什么Java的+ =,-=,* =,/ =复合赋值运算符不需要强制转换?

来自分类Dev

为什么在此示例中需要括号?

来自分类Java

为什么将变量声明为int类型需要强制转换流?长型不需要强制转换

来自分类Dev

为什么一个接口实现需要强制转换而另一种则不需要强制转换?

来自分类Dev

为什么使用 compose 方法需要强制转换,而不使用 andThen 方法

来自分类Dev

为什么在这种情况下需要强制转换?

来自分类Java

为什么在这种情况下需要强制转换?

来自分类Dev

为什么我需要强制转换才能从基类访问实际值?

来自分类Dev

为什么在调用IEnumerable.Contains()时需要强制转换动态对象?

来自分类Dev

当where约束应该足够时,为什么需要强制转换泛型类型

来自分类Dev

为什么向上转换可以直接在c#中完成,但是为了向下转换,我们需要强制转换?

来自分类Dev

什么是AllowAmbiguousTypes,为什么在此“ forall”示例中需要它?

来自分类Dev

为什么需要强制将属性强制转换为具有与属性相同签名的通用方法?

来自分类Dev

为什么在此示例代码中不需要 readSync?

来自分类Dev

为什么在此示例中需要对变量调用detach?

来自分类Dev

为什么在此MobX示例中需要“获取”

来自分类Dev

为什么在此示例中需要Handler对象?

来自分类Dev

为什么在此队列示例中需要取消任务?

来自分类Dev

为什么在此代码示例中需要@Output EventEmitter?

来自分类Dev

为什么在此示例中需要“ where T:class”?

来自分类Dev

为什么在此ngrx示例中需要takeUntil?

来自分类Dev

为什么在此@ngrx示例中需要重新选择createSelector?

来自分类Java

Java Casting方法,不知道要强制转换为什么

来自分类Dev

为什么要强制转换为指针然后取消引用?

来自分类Dev

在以下算术和中是否需要强制转换?

来自分类Dev

postgres varchar需要强制转换

Related 相关文章

  1. 1

    双重推导-为什么需要强制转换

  2. 2

    为什么此代码需要强制转换?

  3. 3

    为什么需要强制转换 Java 泛型方法参数类

  4. 4

    为什么Java的+ =,-=,* =,/ =复合赋值运算符不需要强制转换?

  5. 5

    为什么在此示例中需要括号?

  6. 6

    为什么将变量声明为int类型需要强制转换流?长型不需要强制转换

  7. 7

    为什么一个接口实现需要强制转换而另一种则不需要强制转换?

  8. 8

    为什么使用 compose 方法需要强制转换,而不使用 andThen 方法

  9. 9

    为什么在这种情况下需要强制转换?

  10. 10

    为什么在这种情况下需要强制转换?

  11. 11

    为什么我需要强制转换才能从基类访问实际值?

  12. 12

    为什么在调用IEnumerable.Contains()时需要强制转换动态对象?

  13. 13

    当where约束应该足够时,为什么需要强制转换泛型类型

  14. 14

    为什么向上转换可以直接在c#中完成,但是为了向下转换,我们需要强制转换?

  15. 15

    什么是AllowAmbiguousTypes,为什么在此“ forall”示例中需要它?

  16. 16

    为什么需要强制将属性强制转换为具有与属性相同签名的通用方法?

  17. 17

    为什么在此示例代码中不需要 readSync?

  18. 18

    为什么在此示例中需要对变量调用detach?

  19. 19

    为什么在此MobX示例中需要“获取”

  20. 20

    为什么在此示例中需要Handler对象?

  21. 21

    为什么在此队列示例中需要取消任务?

  22. 22

    为什么在此代码示例中需要@Output EventEmitter?

  23. 23

    为什么在此示例中需要“ where T:class”?

  24. 24

    为什么在此ngrx示例中需要takeUntil?

  25. 25

    为什么在此@ngrx示例中需要重新选择createSelector?

  26. 26

    Java Casting方法,不知道要强制转换为什么

  27. 27

    为什么要强制转换为指针然后取消引用?

  28. 28

    在以下算术和中是否需要强制转换?

  29. 29

    postgres varchar需要强制转换

热门标签

归档