【问题标题】:java how to use classes in other package?java如何使用其他包中的类?
【发布时间】:2011-03-29 15:59:52
【问题描述】:

我可以导入,使用其他包中的类吗? 在 Eclipse 中,我做了 2 个包 一个是主要的,另一个是次要的

主要的 -主要(类) 第二 -第二(类)

我希望主类的主函数调用第二类的函数 x。 我该怎么做?我试过了:

import second; 
second.x(); (if both classes are in the same package then it works)
second.second.x();

但他们都没有工作。 我现在想不通了。

【问题讨论】:

  • 主要和次要主要是什么意思?它们所在的类和包的名称是什么?

标签: java


【解决方案1】:

您必须提供要导入的完整路径。

进口 com.my.stuff.main.Main; 导入 com.my.stuff.second.*;

因此,在您的主课中,您将拥有:

包 com.my.stuff.main 导入 com.my.stuff.second.Second; // 这是您问题的重要内容 类主{ 公共静态无效主要(字符串[]参数){ 第二秒 = 新的 Second(); 第二个.x(); } }

编辑:添加示例以回应 Shawn D 的评论

正如 Shawn D 指出的那样,还有另一种选择,您可以在其中指定要使用的对象的完整包名称。这在两个位置非常有用。首先,如果您只使用过一次该类:

class Main {
    void function() {
        int x = my.package.heirarchy.Foo.aStaticMethod();

        another.package.heirarchy.Baz b = new another.package.heirarchy.Bax();
    }
}

或者,当您想要区分具有相同短名称的两个类时,这很有用:

class Main {
    void function() {
        java.util.Date utilDate = ...;
        java.sql.Date sqlDate = ...;
    }
}

【讨论】:

  • 另外,如果你只是在一个地方引用类,你可以在代码中使用完整的包+类名而不进行导入,或者如果你需要解析两个使用的相同类名导入语句。
【解决方案2】:

根据您的示例,您需要在 main.main 类中添加以下导入:

import second.second;

一些额外的建议,确保你的类名是 Java 标准的。因此,您的示例 Main 类将具有以下结构:

package main;  //lowercase package names
public class Main //titlecase class names
{
    //Main class content
}

【讨论】:

  • 你需要让你的第二个班级“公开”
【解决方案3】:

应该像import package_name.Class_Name --> 如果要导入特定的类 (或)

import package_name.* --> 导入包中的所有类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2013-01-18
    相关资源
    最近更新 更多