Re: [問題] 從文字檔讀取演算法

看板java作者 (Eics)時間16年前 (2009/08/20 00:39), 編輯推噓7(7013)
留言20則, 7人參與, 最新討論串5/6 (看更多)
我用CLASSLOADER將指定路徑的*.class檔(*表表檔名) 可是遭遇到一個問題 URL url1 = new URL("file:/D:/workspace/"); //CLASS檔所在路徑 URLClassLoader urlClassLoader1 = new URLClassLoader(new URL[] {url1}); Class cls =urlClassLoader1.loadClass("ttt"); //CLASS名稱 Object bbb= cls.newInstance(); //將載入的CLASS newInstance() 以上這一段主要在載入class檔,而我的ttt.class內容是 public class ttt { public static void main(String[] args) { } public void sort(int seq[]) { System.out.println(seq[0]); } ttt() { System.out.println("ttt無參數"); } } 裡面只有一個建構子和一個方法,可是建構子ttt()卻會讓我 Object bbb= cls.newInstance() 這一句無法過newInstance ,但是當我把建構子砍掉以後,就又可以過了,我以為是我忘記加null 所以就把cls.newInstance(null),沒想出現不適用引數null的訊息 我查了一下,通常是把建構子和方法分開放在不同class裡面 就是有建構子就沒有方法,有方法就沒有建構子 再分別用getconstructor抓建構子和invoke抓方法 是我這樣放在一起是錯的嗎?本來可以過的 放在一起卻不能用cls.newInstance()了,這樣除了分開放沒有別的辦法了嗎? 一直出現錯誤訊息 java.lang.IllegalAccessException: Class constructor1 can not access a member of class ttt with modifiers "" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: eicsarch 來自: 118.170.2.4 (08/20 01:01)

08/20 01:58, , 1F
會不會是因為建構子是default?試試public?
08/20 01:58, 1F

08/20 07:22, , 2F
感謝!!!加上public以後果然成功了!!
08/20 07:22, 2F

08/20 07:34, , 3F
不過為什麼不加public不能用??原理是什麼?
08/20 07:34, 3F

08/20 09:09, , 4F
就是基本的權限阿....
08/20 09:09, 4F

08/20 11:36, , 5F
Java 規定就是這樣,不想寫 public 就用 Scala 吧
08/20 11:36, 5F

08/20 11:46, , 6F
樓上拉票拉很大.... [誤]
08/20 11:46, 6F

08/20 11:57, , 7F
我是覺得語言本身就應該提供一些能省略的機制的, 像是
08/20 11:57, 7F

08/20 11:59, , 8F
美國真多加拿大人 其實是 (在)美國(有)真多加拿大人
08/20 11:59, 8F

08/20 13:23, , 9F
嗯.. 持反對意見 XD
08/20 13:23, 9F

08/20 16:06, , 10F
就這個問題而言,五樓提出的建議是本末倒置。
08/20 16:06, 10F

08/20 21:33, , 11F
樓上認真了....XD
08/20 21:33, 11F

08/21 09:26, , 12F
本末倒置嘛?如果我和你功力一樣,少打個public就比較快
08/21 09:26, 12F

08/21 09:29, , 13F
寫程式又不是打字比賽,快慢意義不大。
08/21 09:29, 13F

08/21 09:40, , 14F
好吧,反過來說好了 Java 的 default 出現率很低...
08/21 09:40, 14F

08/21 09:42, , 15F
如果把 default 和 public 反過來 (default 要多打字)
08/21 09:42, 15F

08/21 09:43, , 16F
這樣整體程式一口氣可以少掉一堆 public 看起來很簡潔
08/21 09:43, 16F

08/21 09:44, , 17F
至少我覺得讓程式簡潔一點也沒什咩不對,當然你可以說
08/21 09:44, 17F

08/21 09:46, , 18F
"Java這樣比較習慣"或是"讓新手知道要用public"之類的
08/21 09:46, 18F

08/21 09:49, , 19F
如果要用Java,Java的規定就是要遵守,少打就是不行的
08/21 09:49, 19F

08/21 11:20, , 20F
請不要推文成章....
08/21 11:20, 20F
文章代碼(AID): #1AZ2gaM6 (java)
討論串 (同標題文章)
文章代碼(AID): #1AZ2gaM6 (java)