java从同一个包导入

时间:2014-01-31 13:30:48

标签: java methods import package

我是java的新手,谷歌搜索并没有帮助我。所以,忍受我......:P
我创建了一个包acs。这个包有类Gets,其方法为foo()

现在,我在同一个包中创建了另一个类,并尝试调用方法foo()。当然这可行 - (new Gets()).foo();

但我添加了一个导入import acs.Gets;,并尝试直接使用该方法 - foo();,如http://docs.oracle.com/javase/tutorial/java/package/usepkgs.html中所述。但不幸的是,代码没有用。请告诉我哪里出错了。任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:10)

如果该函数是静态的,则只能从另一个类导入函数;所以例如这将起作用:

public class Gets {
    public static void foo() {}
}

然后导入它:

import static acs.Gets.foo;

如果它不是静态的,你将无法导入它。

编辑:正如评论中指出的那样,使用静态导入会使代码更难以阅读,因此应谨慎使用。如果正确使用它们会很有用。

答案 1 :(得分:1)

将foo()方法设为静态,并使用classname.foo();

访问它

答案 2 :(得分:0)

如果没有对象,则无法访问另一个类的方法,无论该类是否存在于同一个包中。

答案 3 :(得分:0)

Java是面向对象的。您需要为该类创建一个对象,以便调用该类的方法。

类似

new Gets().myFunction();

必然会奏效。 此规则的唯一例外是创建static方法。您可以找到何时创建静态方法,如果它们符合您的要求,但是要访问类的方法,您需要一个对象。

答案 4 :(得分:0)

您仍然需要创建一个对象来访问非静态方法:

(new Gets()).foo();

您仍然需要声明该类以访问静态方法:

Gets.staticFoo();

需要从同一个包导入一个类。这是多余的,因为包中的所有类已经彼此可见。

此外,您也对自己的进口工作方式感到困惑。导入类意味着无需限定即可访问其方法或字段。

另一个包导入类的原因是,不必在代码中的任何地方声明包。而不是写:

acs.anotherpkg.Blah testblah = new acs.anotherpkg.Blah();

您可以简单地写一下:

import acs.anotherpkg.Blah;
...
Blah testblah = new Blah();