Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > @Override -> incompatible types


Автор: turing 2.10.2010, 14:23
Берём кусок кода прямо из букваря:

Код

class A{
    void f(){}
}

class B extends A{
    void f(){}
}

class Test{
    public static void main(){
        new B();
    }
}

Понятное дело, компилится.

Желаем убедиться, что метод класса B будет переопределять родительский. Добавлям едиственное слово:

Код

class A{
    void f(){}
}

class B extends A{
    @Override void f(){}
}

class Test{
    public static void main(){
        new B();
    }
}

Получаем матюги:
Код

>javac Test.java
Test.java:8: incompatible types
found   : Override
required: java.lang.annotation.Annotation
        @Override
         ^
1 error

Вроде написано всё верно. Добавил строчку import java.lang.annotation.*; - никаких изменений. Что-то у меня не так?

Автор: nc30 2.10.2010, 15:04
Попробуйте так
Код

public class Test {
    public static void main(String[] args) {
        new B();
    }
}

Автор: turing 2.10.2010, 15:06
Неправильный список аргументов у main() на компиляцию не влияет.

Автор: XoJIoD 2.10.2010, 15:09
Наберите в командной строке "java -version" и "javac -version" что выдает?

Автор: nc30 2.10.2010, 15:28
Цитата(turing @ 2.10.2010,  13:06)
Неправильный список аргументов у main() на компиляцию не влияет.

На ваш вариант с @Override NetBeans выдает следующее
java.lang.NoSuchMethodError: main
Exception in thread "main" Java Result: 1
а с использованием аргумента собирается без ошибок.

Хотя в первом случае тоже компилируется, сразу не посмотрел  smile 

Автор: turing 2.10.2010, 16:59
В том-то и дело, что код правильный.

Автор: turing 2.10.2010, 20:02
XoJIoD, версии разные. JDK 1.5.0, JRE 1.6.0_21-b07. Намёк понял, сейчас установлю свежий JDK.

*спустя 15 минут*

Установил. Теперь всё ок.

Но Холмс! Как вы догадались?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)