2012-04-17 39 views
4

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

有人有什麼想法嗎?

+0

您可以訪問它們在同一封裝公共或默認定義的類訪問修飾符。 IntelliJ有什麼問題,它說什麼? – JMelnik 2012-04-17 15:29:04

+0

您需要實例化一個實例A. – buymypies 2012-04-17 15:30:10

+1

我認爲您需要首先了解有關Java基礎知識的更多信息。 – 2012-04-17 15:31:59

回答

7

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

假設你有buymypies寫了兩個文件,標準的Java約定是這兩個文件將存在於源代碼區的Example目錄中,如/myprojectpath/src/Example。但從技術上說,並不是要在源目錄結構中反映包結構,而只是最佳實踐。因此,如果你不模仿包結構,並且這兩個文件只是在/myprojectpath/src中,IntelliJ會給你「無法解析符號」的錯誤,因爲它期望源代碼結構反映包結構,但是它會編譯好的。

我不確定這是否是您的問題,但我確實使用IntelliJ並已經看到了這一點,所以這是需要看的。

+0

以上解決了我在Android Studio中使用相同包的問題,​​謝謝。請注意,大寫事務。 – Martin 2015-07-10 03:42:32

9

如果他們是在同一個包,你可以不進口訪問的B類:

package example; 

public class B{ 
    public static void main(String[] args){ 
     A myA = new A(); 
    } 
} 
-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的「干將」和「二傳手。

+1

不,IDEA中的麻煩,因爲我不能做新的A()。我的意思是......我可以,但想法不能解決一個類。與此同時,編譯器通常在我嘗​​試運行代碼的時候。 – 2012-04-17 15:51:04

+0

我認爲在一些代碼完成設置或類似的問題 – 2012-04-17 15:53:06

+0

以及你沒有證明你的問題很好,通過不正確的Java語法。不幸的是,我從來沒有使用過Itellij,並且我不太確定你真正想問什麼。 – buymypies 2012-04-18 11:17:35

5

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

然後它想要在原地添加完全限定名 - 因此它清楚地知道路徑 - 爲什麼它不能訪問該類?

該模塊仍在編譯和運行,所以它只是IDE的行爲奇怪 - 所有這些紅色都很讓人分心,因爲它實際上並不是一個錯誤,它只是IDEA拋出一個奇怪的搖擺。

這也是最近的。兩週前,我根本沒有這個問題,現在突然啓動了。當然,它可以很快消失,但它真的很煩人。

1

同樣的問題,我只是修復它。

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

0

請確保A.java和B.java都在同一個包中。由於兩者都是在同一個包,無需指定package example;

類A:B

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

類:

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