即使从未调用代码块,为什么还会丢失方法错误?

时间:2015-06-29 21:15:12

标签: java jvm switch-statement

我正在写一个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会评估从未命中过的代码?

1 个答案:

答案 0 :(得分:0)

Java不知道将调用哪些代码。例如,您也可以上传并使用来自服务器的类文件。除此之外,如果涉及用户选择,将会非常复杂(甚至不可能)来预测代码的哪些部分将被访问,哪些部分不会被访问。结果字节代码将包含对甚至不存在的代码的引用,这将使编译和执行变得相当复杂。