我对像机器人卡雷尔这样的程序感到好奇,因为它不使用main()方法。相反,它使用了run()方法:
import stanford.karel.Karel;
public class CollectNewspaperKarel extends Karel {
public void run() {
move();
}
}它怎麽工作?
发布于 2014-07-26 22:24:25
实际的主要方法是在其他地方。例如,在KarelRunner类中。当java执行程序时,它实际上是在运行器类中执行main方法。从运行程序代码中调用您自己的run方法。
发布于 2014-07-27 01:59:45
"main“方法是每个java程序的起点。这个类所做的是,它本身不是一个java程序,而是在某种类型的框架内执行(在本例中,是卡洛机器人java实现),这个框架有一个“主”方法,而不是这个类,这个框架知道如何加载这个类并执行他的run方法。
这个“程序”是设计用来做一种特殊类型的程序的框架,我不知道这个“卡雷尔框架”,但是,例如,当你编写一个java web应用程序时,你写了一个"servlet“,但是你没有写一个”主“方法。有一些叫做“应用服务器”的程序,它们有一个"main“方法,并接受这个servlet类并执行以响应某些http消息。
发布于 2014-07-27 00:09:10
这没什么奇怪的。CollectNewspaperKarel类只是在扩展卡雷尔的行为。它不需要有一个main 方法.
将作为程序的入口点的类确实需要拥有一个main方法并创建一个CollectNewspaperKarel实例,例如:
public class MyProgram {
public static void main(String[] args) {
CollectNewspaperKarel cnpk = new CollectNewspaperKarel();
cnpk.run();
}
}或者CollectNewspaperKarel的实例可以是一个静态字段:
public class MyProgram {
private static CollectNewspaperKarel cnpk = new CollectNewspaperKarel();
public static void main(String[] args) {
cnpk.run();
}
}卡雷尔不是一个应用程序,而是一个API。你提出申请.
https://stackoverflow.com/questions/24976037
复制相似问题