你能帮助我理解为什么我们在这里打电话给父班吗?我发现了一个看起来很简单的下载类,但是可以使用帮助将我的大脑包围在第一种方法中。
public class DownloadHandler {
public static void main(String[] args) throws Exception {
DownloadHandler d = new DownloadHandler();
d.URLSetUp(args[0]);
}
....
}
我试图在for循环中实例化处理程序并收到错误。
DownloadHandler file = new DownloadHandler("http://example.com/"+cleanLink+"/"+filename+".pdf")
它说“DownloadHandler中的DownloadHandler()无法应用于(java.lang.String)”
答案 0 :(得分:1)
您的DownloadHandler
类有static void main
方法,这是执行命令行程序时的单一入口点。
该方法不是构造函数。
它的作用是初始化DownloadHandler
的新实例,并通过传递给定的String参数在该对象上调用实例方法。
不确定那里的用法是什么。
为了进行初始化编译,您可能希望添加一个执行类似操作的构造函数,在您的情况下给出一个String
参数。
例如:
public DownloadHandler(String s) {
URLSetUp(s);
}
答案 1 :(得分:1)
Java为每个没有提供默认构造函数的类添加了一个默认构造函数。构造函数是没有返回类型的方法。因此,在您的情况下,默认构造函数DownloadHandler()
会自动添加到您的类中,并且在您尝试使用String初始化它时不会采用任何参数。
您现在在main方法中使用的String来自用户的控制台。
答案 2 :(得分:1)
从您的代码中可以看出,您希望通过命令行参数传递参数。但是当你启动DownloadHandler时,你将把这个字符串传递到这里,这不是你应该做的。
现在你可以做两件事。
通过命令行参数传递字符串 java DownloadHandler yourstring
编写一个接受该字符串的构造函数。在主方法之外的代码中
String url;
public DownloadHandler(String str)
{
url = str;
}
现在致电
d.URLSetup(url);
希望这能清除你的疑虑。