8

我喜欢 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 类。Idea 说“无法解析符号”,但我实际上知道包中存在 A 类。下一个奇怪的是编译器工作正常,没有例外。只是IDEA看不到同一个包中的类。

有人有什么想法吗?

4

5 回答 5

13

如果它们在同一个包中,则无需导入即可访问 B 类中的 A:

package example;

public class B{
    public static void main(String[] args){
        A myA = new A();
    }
}
于 2012-04-17T15:29:16.657 回答
7

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

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

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

我不确定这是否是您的问题,但我确实使用 IntelliJ 并且已经看到了这一点,因此值得一看。

于 2012-10-10T21:33:38.307 回答
5

我有同样的问题:同一个包中有两个类,但是当一个类尝试调用另一个类时,Intellij 用红色下划线并说无法解析符号“类名”,例如无法解析符号“LocalPreferencesStore”。

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

该模块仍在编译和运行,所以它只是 IDE 的行为奇怪 - 所有红色都非常分散注意力,因为它实际上不是一个错误,它只是 IDEA 抛出了一个奇怪的摇摆不定。

这也是最近的。两周前我根本没有这个问题,现在突然启动了。当然,它可能很快就会自行消失,但这真的很烦人。

于 2015-03-20T11:57:18.100 回答
1

同样的问题,我刚刚修复了它。

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

于 2016-05-02T02:43:52.767 回答
-5

我认为您需要学习有关 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'。

于 2012-04-17T15:39:53.743 回答