使用静态导入时的未定义方法

时间:2016-09-17 08:22:30

标签: java import static undefined

我正在阅读“Java思考”,第4版'并且无法通过此练习:

  

创建两个包:debug和debugoff,包含一个相同的类   使用debug()方法。第一个版本显示其String参数   到控制台,第二个什么也没做。使用静态导入行   将类导入测试程序,并演示条件   编译效果。

显然我缺少了一些东西,因为当我尝试这个时:

// C:\Users\user\Documents\EclipseProjects\DebugOnOff\bin\debugonoff\debugon
package debugonoff.debugon;
public class Test {
    public static void debug(String str) {}
}

// C:\Users\user\Documents\EclipseProjects\DebugOnOff\bin\debugonoff\debug
package debugonoff.debug;
public class Test {
    public static void debug(String str) {
        System.out.println(str);
    }
}

// C:\Users\user\Documents\EclipseProjects\DebugOnOff\bin
import static debugonoff.debug.Test.*;
public class TestProgram {
    public static void main(String[] args) {
        debug("Hi there!");
    }
}

发生此错误消息:

  

对于TestProgram类型

,方法debug(String)未定义

这里的问题是什么?

3 个答案:

答案 0 :(得分:0)

您无法使用指定的静态导入来导入方法

  1. 您可以使用静态导入来访问或导入成员(对象)
  2. Ex:System.out.println(""); - >可以替换为         通过out.println("&#34);如果你进行了java.lang.System的静态导入。*;

    1. 在任何情况下都不建议使用静态导入,因为它会降低代码的可读性和可维护性。

    2. 静态方法只能以Class.methodName()的最小方式访问 或者像往常一样新的class()。methodName()

    3. addComment 如果您不清楚

答案 1 :(得分:0)

此代码应该有效。至少它对我有用。

您使用哪种编译器,Java版本,IDE和操作系统?

请注意,其他2条评论不正确[{3}}。可以为方法执行静态导入。文档中的示例是

import static java.lang.Math.*; double r = cos(PI * theta);

答案 2 :(得分:0)

您可以查看项目设置吗?

我将您的代码复制到我的项目中并且有效。

从您已经显示的路径看来,您的代码似乎位于bin目录中 - 这是eclipse通常放置已编译的.class文件的位置。您的源文件应该位于src目录中。