метод по умолчанию в интерфейсе выполняется с командной строкой, но не в eclipse

#java #interface #java-8 #default-method

#java #интерфейс #java-8 #default-method

Вопрос:

 interface G {
    default void print() {
        System.out.println("G");
    }
}
class M {
    public void print() {
        System.out.println("M");
    }
}
class GImpl extends M implements G {}
public class Wierd {
    public static void main(String[] args) {
        G g=new GImpl();
        g.print();
    }
}
  

я пытался использовать метод по умолчанию в интерфейсе, но при компиляции с eclipse я получаю сообщение об ошибке в строке 2 — написано удалить по умолчанию, но я компилирую и запускаю с помощью командной строки, она работает нормально, в чем может быть причина этого?

Комментарии:

1. Я полагаю, что только Luna поддерживает [Java-8], какую версию вы используете???

2. затем попробуйте ссылку, которую TAsk дал вам в ответе, я бы хотел, чтобы это сработало для Juno.

3. О Juno не может быть и речи. Самой ранней версией, которую вы можете использовать, является Kepler SR2, но для этого потребуется дополнительно применить исправление Java 8.

Ответ №1:

  • Ваше eclipse по-прежнему не использует Java8 версию, пожалуйста, проверьте, что она может быть меньше 8.
  • Используйте System.out.println(System.getProperty("java.runtime.version")); для проверки.
  • Вам также может потребоваться изменить путь сборки вашего проекта и уровень компилятора в eclipse.

И что более важно:

Установка поддержки Java ™ 8.

Комментарии:

1. я получил этот 1.8.0_05-b13, я думаю, только 8

Ответ №2:

Похоже, что вы установили Java 8 JDK, но ваш eclipse по-прежнему не поддерживает Java 8. Eclipse Luna поддерживает Java 8. Чтобы изменить параметры компилятора, щелкните правой кнопкой мыши ваш проект> Свойства> Компилятор Java> Установите флажок «Включить настройки, относящиеся к конкретному проекту»> Затем выберите уровень соответствия компилятора.введите описание изображения здесь