2012-11-29 76 views
0

我有兩套代碼在拳頭我已定義自定義字符串類,並試圖創建它的實例,而在第二我定義了自定義的System類並嘗試創建它的實例。爲什麼我不能克里特島自定義字符串類的實例,而我能夠創建自定義系統類的實例

這既不是一個面試問題,也不做作業,我剛剛試了一下檢查this

在此我想創建我已經定義了String類的實例後,我得到了Exception in thread "main" java.lang.NoSuchMethodError: main

public class Test { 
    public static void main(String[] args) throws Exception { 
     String s = new String(); 
     java.lang.System.out.println("done"); 
    } 
} 

class String { 
    public String() { 
     java.lang.System.out.println("custom String"); 
    } 
} 

在這部分我試圖創建我已定義的系統類的實例,它工作正常

public class Test { 
    public static void main(String[] args) throws Exception { 
     System s = new System(); 
     java.lang.System.out.println("done"); 
    } 
} 
class System { 
    public System(){ 
     java.lang.System.out.println("custom System"); 
    } 
} 

Both St ring和System類是最終的,那麼爲什麼行爲有差異?

+3

更改您的主要方法接收'java.lang.String中[] args',你的代碼將工作。 –

+0

@LuiggiMendoza ..你應該發佈這個答案。這確實是一個很好的結果。 –

+0

@RohitJain這確實是一個重複的問題(我無法找到鏈接atm),所以不需要回答它。 –

回答

2

發生這種情況,因爲您main是使用自定義String類作爲不與標準main方法(入口點),它接受java.lang.String[]作爲參數匹配參數類型;因此抱怨。

更改您的main使用java.lang.String類爲:

 public static void main(java.lang.String[] args) 
相關問題