作者eicsarch (Eics)
看板java
標題Re: [問題] 從文字檔讀取演算法
時間Thu Aug 20 00:38:59 2009
我用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)
1F:→ kanandg1:會不會是因為建構子是default?試試public? 08/20 01:58
2F:→ eicsarch:感謝!!!加上public以後果然成功了!! 08/20 07:22
3F:→ eicsarch:不過為什麼不加public不能用??原理是什麼? 08/20 07:34
4F:推 PsMonkey:就是基本的權限阿.... 08/20 09:09
5F:推 Schelfaniel:Java 規定就是這樣,不想寫 public 就用 Scala 吧 08/20 11:36
6F:推 PsMonkey:樓上拉票拉很大.... [誤] 08/20 11:46
7F:→ Schelfaniel:我是覺得語言本身就應該提供一些能省略的機制的, 像是 08/20 11:57
8F:→ Schelfaniel:美國真多加拿大人 其實是 (在)美國(有)真多加拿大人 08/20 11:59
9F:推 PsMonkey:嗯.. 持反對意見 XD 08/20 13:23
10F:→ sbrhsieh:就這個問題而言,五樓提出的建議是本末倒置。 08/20 16:06
11F:推 puzi:樓上認真了....XD 08/20 21:33
12F:→ Schelfaniel:本末倒置嘛?如果我和你功力一樣,少打個public就比較快 08/21 09:26
13F:推 qrtt1:寫程式又不是打字比賽,快慢意義不大。 08/21 09:29
14F:→ Schelfaniel:好吧,反過來說好了 Java 的 default 出現率很低... 08/21 09:40
15F:→ Schelfaniel:如果把 default 和 public 反過來 (default 要多打字) 08/21 09:42
16F:→ Schelfaniel:這樣整體程式一口氣可以少掉一堆 public 看起來很簡潔 08/21 09:43
17F:→ Schelfaniel:至少我覺得讓程式簡潔一點也沒什咩不對,當然你可以說 08/21 09:44
18F:→ Schelfaniel:"Java這樣比較習慣"或是"讓新手知道要用public"之類的 08/21 09:46
19F:→ Schelfaniel:如果要用Java,Java的規定就是要遵守,少打就是不行的 08/21 09:49
20F:推 PsMonkey:請不要推文成章.... 08/21 11:20