我正在写一个Mad Libs计划。在其中,有各种各样的故事......或者至少会有。目前,只有一个。但我选择故事的方法参考了我尚未制作的方法。出于某种原因,这段代码不会编译,即使我没有调用unmade方法。这是为什么?
这是选择故事方法。
public void chooseStory (int choice)
{
switch (choice)
{
case 1:
story1();
break;
case 2:
story2();
break;
case 3:
story3();
break;
case 4:
story4();
break;
}
但即使choice
为1,我仍然会收到错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method story2() is undefined for the type MLServer
The method story3() is undefined for the type MLServer
The method story4() is undefined for the type MLServer
at MLServer.chooseStory(MLServer.java:13)
at MLApp.main(MLApp.java:31)
为什么JVM会评估从未命中过的代码?
答案 0 :(得分:0)
Java不知道将调用哪些代码。例如,您也可以上传并使用来自服务器的类文件。除此之外,如果涉及用户选择,将会非常复杂(甚至不可能)来预测代码的哪些部分将被访问,哪些部分不会被访问。结果字节代码将包含对甚至不存在的代码的引用,这将使编译和执行变得相当复杂。