簡體   English   中英

同一個包中的類

[英]Classes in same package

我喜歡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無法在同一個包中看到該類。

有人有什么想法嗎?

如果它們在同一個包中,您可以在B類中訪問A而無需導入:

package example;

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

也許這會幫助你,或者其他人使用IntelliJ獲得“無法解決符號”錯誤,但仍然可以編譯他們的代碼。

假設你有兩個buymypies寫的文件,標准的Java約定是兩個文件存在於源代碼區的Example目錄中,比如/myprojectpath/src/Example 但從技術上講,不需要在源目錄結構中反映包結構,這只是一種最佳實踐。

因此,如果您不模仿包結構,並且這兩個文件只在/myprojectpath/src ,IntelliJ將為您提供“無法解析符號”錯誤,因為它希望源代碼結構能夠反映包結構,但它會編譯好的。

我不確定這是不是你的問題,但是我確實使用了IntelliJ並且看過這個,所以這是值得關注的。

我有同樣的問題:在同一個包中有2個類,但當一個人試圖調用另一個時,Intellij用紅色表示它並且說無法解析符號'Classname',例如無法解析符號'LocalPreferencesStore'。

然后它想要在原位添加完全限定名稱 - 所以它清楚地知道路徑 - 所以為什么它不能只訪問該類?

該模塊仍然編譯和運行,所以它只是IDE表現得很奇怪 - 所有紅色都非常分散注意力,因為它實際上並不是一個錯誤,它只是IDEA投擲一個奇怪的搖擺。

這也是最近的。 兩個星期前,我根本沒有遇到這個問題,現在突然間它開始了。 當然,它可能很快就會自行消失,但它真的很煩人。

同樣的問題,我剛剛解決了。

我不知道你的文件夾結構。 但是,如果您的package example是手動添加的。那就是問題所在。 包應該與文件夾結構相同,這意味着如果您希望將類文件存儲在package example ,則必須將java文件存儲在src的名為example的子文件夾中。

請確保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();
    }
}

你需要學習關於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'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM