2012-02-27 13 views
0

は、インターフェイスの継承を使って実験して発見されたこの:JDK 6.0.29の奇妙な例外?

interface String{} 
interface Object{} 
interface Exception{} 
interface Integer extends String, Object, Exception{} 

public class Test implements Integer{ 
    public static void main(String[] args) { 
     System.out.println("Test"); 
    } 
} 

それはコンパイルが、実行時に"main" java.lang.NoSuchMethodError: main投げるのか?

public static void main(java.lang.String[] args) { 

あなたは

public static void main(String[] args) { 

を書く場合、それはあなたの文字列インタフェースの配列を取得しますので、あなたが称賛した場合、署名は

+0

どのように実行していますか? 'Test.class'と同じディレクトリにいますか? –

答えて

7

あなたの控えめなStringインターフェイスから、Testクラスは最終クラスであるjava.lang.Stringを拡張しようとします。あなたはできませんそれを拡張します。 Integerのようなインターフェイスにクラスを別のインターフェイスの代わりに拡張するには、コンパイラエラーが発生するはずです。

私はこの実験について何も学んでいません。それが本当のコードに変わることはありません。

+0

問題は、たとえ私が文字列インタフェースをコメントアウトしても問題が残っていても、 – 4lex1v

+0

あなたのStringインタフェースにコメントする必要はありません。上記のように(明示的なjava.lang.Stringを使って)メインメソッドを入力してコンパイルして正常に実行してください –

+0

これはうまくいきませんでしたプログラミングのために遅すぎると思います – 4lex1v

3

異なっている:メインメソッドのシグネチャをする必要があるためです

関連する問題