Странное исключение, ошибка JDK 6.0.29? - PullRequest
0 голосов
/ 28 февраля 2012

Экспериментировал с наследованием интерфейса и обнаружил следующее:

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 во время выполнения?

Ответы [ 2 ]

7 голосов
/ 28 февраля 2012

Это потому, что подпись основного метода должна быть:

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

если вы напишите

 public static void main(String[] args) {

получает массив ваших String-интерфейсов, поэтому сигнатура отличается

3 голосов
/ 28 февраля 2012

Если вы похвалите свой нежелательный интерфейс String, класс Test попытается расширить java.lang.String, что является окончательным классом.Вы не можете расширить его.И запрос интерфейса, такого как ваше Integer, расширить класс вместо другого интерфейса должен вызвать ошибку компилятора.

Я не вижу ничего познавательного в этом эксперименте.Ничто из этого не должно найти дорогу в настоящий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...