看板 java 關於我們 聯絡資訊
: 假設如下的程式碼: : : 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)
tkcn:抱歉,你說的沒錯,前面是我沒搞清楚. 目前我不認為有其他解法 07/08 19:12
tkcn:spec上的規定寫,若ambiguous時會優先當成type處理 07/08 19:18
sbrhsieh:話說回來,通常 package 是小寫開頭,class是大寫開頭 07/08 21:24
sbrhsieh:不應有此困擾~~~ 07/08 21:25
shiengchyi:另外變數最好也習慣小寫開頭 0.0/ 07/11 15:16