Re: [問題] package 與 class 名稱相同問題

看板java作者時間13年前 (2011/07/08 18:18), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串2/4 (看更多)
: 假設如下的程式碼: : : tw/sub1/test.java (package 為 tw.sub1) : : tw/sub2/test.java (package 為 tw.sub2) : tw/sub2/tw.java (package 為 tw.sub2) : : 假設在 tw.sub2.test 裡使用 tw.sub1.test (已使用全名) : 但因為 tw.sub2 下有 tw 這個 class : 所以 compiler 會把 tw.sub1.test 的 tw 當成是 tw.sub2.tw : 然後就抱怨找不到 sub1 : : 想請問有重新命名之外的解決方法嗎? : 謝謝 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.112.30.49 : → tkcn:使用的時候直接打全名 "tw.sub1.test" 07/08 17:59 : ^^ : 唔,我在文章裡有解釋, 這個 tw 會被 compiler 視為 tw.sub2.tw : 所以會找不到 (因為不存在 tw.sub2.tw.sub1.test) : ※ 編輯: HuangTzHuan 來自: 140.112.30.49 (07/08 18:07) : → tkcn:你 compile 的方法不正確,先去查一下吧 07/08 18:10 抱歉,可以給點提示嗎? compile 的指令為: javac tw/sub2/test.java 如果 sub2/ 下沒有 tw.java,則一切正常 如果 sub2/ 下有 tw.java 會得到如下 error $ javac tw/sub2/test.java tw/sub2/test.java:10: cannot find symbol symbol : class sub1 location: class tw.sub2.tw tw.sub1.tw t = new tw.sub1.test(); ^ tw/sub2/test.java:10: cannot find symbol symbol : class sub1 location: class tw.sub2.tw tw.sub1.tw t = new tw.sub1.test(); ^ 2 errors -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.49 ※ 編輯: HuangTzHuan 來自: 140.112.30.49 (07/08 18:21)

07/08 19:12, , 1F
抱歉,你說的沒錯,前面是我沒搞清楚. 目前我不認為有其他解法
07/08 19:12, 1F

07/08 19:18, , 2F
spec上的規定寫,若ambiguous時會優先當成type處理
07/08 19:18, 2F

07/08 21:24, , 3F
話說回來,通常 package 是小寫開頭,class是大寫開頭
07/08 21:24, 3F

07/08 21:25, , 4F
不應有此困擾~~~
07/08 21:25, 4F

07/11 15:16, , 5F
另外變數最好也習慣小寫開頭 0.0/
07/11 15:16, 5F
文章代碼(AID): #1E5jbivs (java)
討論串 (同標題文章)
文章代碼(AID): #1E5jbivs (java)