【问题标题】:Trying to understand what this code means for HttpURLConnection试图理解这段代码对 HttpURLConnection 意味着什么
【发布时间】:2020-11-04 09:58:36
【问题描述】:

我正在查找以前由离开公司的同事编写的示例代码。但我无法理解用抽象类名定义方法的作用是什么

这是导入语句

import java.net.HttpURLConnection;

还有一个方法写成

private static HttpURLConnection pullData(url, redirects) throws IOException
try
{
String method = "GET";
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(method);
connection.setInstanceFollowRedirects(false);
int statusCode = connection.getResponseCode();
if (statusCode == 301) {
                if (redirects == 0) {
                    throw new IOException("Stop!");
                }
                connection.disconnect();
                return pullData(url, redirects - 1);
}
catch (IOException ioerror) {
            if (connection != null) {
                connection.disconnect();
            }
            throw ioerror;
}
        return connection;
}

现在我正在阅读 https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html 上的 HttpURLConnection 并注意到它是一个抽象类。但是不明白用那个类名定义一个方法会达到什么目的。它应该是一种数据类型吗?

private static HttpURLConnection <methodname> 基本上是做什么的?

【问题讨论】:

  • 这意味着该方法将返回一个对象,该对象是HttpURLConnection类的一个实例。不清楚是什么让您感到困惑。
  • 感谢@LEQADA - “返回一个对象,它是 HttpURLConnection 类的一个实例” - 这是我试图理解的。通常人们会通过实例化一个类来创建一个对象,但在这种情况下它会返回一个对象
  • 所有正在发生的事情是“其他人”实际上正在创建对象 - 很可能是url.openConnection()

标签: java httpurlconnection


【解决方案1】:

一种数据类型,而不是类似一种数据类型。

写一个类似的方法

       DataTypeName methodName(…) { … }

表示methodName 返回对DataTypeName 类型对象的引用。

DataTypeName 是否是某个其他类的超类,或者它是否被声明为 abstract,与该定义无关。

abstract的使用仅仅意味着抽象类必须被子类化;您不能实例化抽象类的对象。

在您的示例中,这意味着可以有几个不同的子类,但这个例程将它们都视为HttpURLConnection 类型。这就是简单的面向对象的多态性。

【讨论】:

  • “类一种数据类型,而不是喜欢一种数据类型。”我想我知道你的意思意思是,但是...如果您删除该句子,您的答案会得到改善。我喜欢here 对类的描述:类是创建单个对象的蓝图。 Java 有 types(而不是 data types),即原始类型和引用类型。这里有一个很好的总结:difference between class and type.
猜你喜欢
  • 2017-12-31
  • 1970-01-01
  • 2016-01-14
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2023-01-03
相关资源
最近更新 更多