同一个包中的类

时间:2012-04-17 15:24:18

标签: java intellij-idea

我喜欢Intellij IDEA,但我已经陷入了Java导入的一个小问题。 例如,有一个名为“example”的包,其中包含两个不同的类:A.java和B.java。

我想从没有进口的“B”级进入“A”级。像这样:

A类:

package example;

public class A{ ... some stuff here ...}

B级:

package example;

public class B{
    public static void main(String[] args){
        A myVar = new A();
    }
}

此代码可能无效,但无关紧要。仅使用IDE及其导入类的机制会遇到麻烦。

所以,问题是我看不到来自B的A类。想法说“不能解决符号”,但实际上我知道A类存在于包中。下一个奇怪的是编译器工作正常,没有例外。只是IDEA无法在同一个包中看到该类。

有人有任何想法吗?

6 个答案:

答案 0 :(得分:10)

如果它们在同一个包中,您可以在B类中访问A而无需导入:

package example;

public class B{
    public static void main(String[] args){
        A myA = new A();
    }
}

答案 1 :(得分:6)

也许这会帮助你,或者其他人使用IntelliJ获得“无法解决符号”错误,但仍然可以编译他们的代码。

假设您有buymypies编写的两个文件,标准的Java约定是这两个文件将存在于源代码区域的Example目录中,如/myprojectpath/src/Example。但从技术上讲,不需要在源目录结构中反映包结构,这只是一种最佳实践。

因此,如果您不模仿包结构,并且这两个文件只在/myprojectpath/src中,IntelliJ将为您提供“无法解析符号”错误,因为它希望源代码结构能够反映包结构,但它会编译好。

我不确定这是不是你的问题,但是我确实使用了IntelliJ并且看过这个,所以这是值得关注的。

答案 2 :(得分:5)

我有同样的问题:同一个包中有2个类,但是当一个人试图调用另一个时,Intellij用红色表示它并且说无法解析符号' Classname'无法解析符号' LocalPreferencesStore'。

然后它想要在原地添加完全限定名称 - 所以它清楚地知道路径 - 所以为什么它只能访问该类?

该模块仍然可以编译和运行,所以它只是IDE表现得很奇怪 - 所有红色都非常分散注意力,因为它实际上并不是一个错误,它只是IDEA抛出一个怪异的摇摇欲坠。

这也是最近的。两个星期前,我根本没有遇到这个问题,现在突然间它开始了。当然,它可能很快就会自行消失,但它真的很烦人。

答案 3 :(得分:1)

同样的问题,我刚修好了。

我不知道您的文件夹结构。 但是,如果您手动添加了package example,那就是问题所在。 包应该与文件夹结构相同,这意味着如果您希望将类文件存储在package example中,则必须将java文件存储在src的名为example的子文件夹中。

答案 4 :(得分:0)

请确保A.java和B.java都在同一个包中。由于两者都在同一个包中,因此无需指定package example;

A类:

public class A{ ... some stuff here ...}

B组:

public class B{
    public static void main(String[] args){
        A myVar = new A();
    }
}

答案 5 :(得分:-4)

您需要了解我认为的Java基础知识。

以下是我认为您正在尝试的基本示例:

package Example;

public class A
{
    String myVar;

    public String getMyVar()
    {
        return myVar;
    }

    public void setMyVar(String myVar)
    {
        this.myVar = myVar;
    }
}

您需要创建A的实例。

package Example;

public class B
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        A myA = new A();

        myA.setMyVar("Hello World!");

        System.out.println(myA.getMyVar);
    }

}

查找java'getters'和'setters'。