Как вы, специалисты, знаете в Java 8, интерфейсы могут иметь статические методы, которые имеют реализации внутри себя.Почему я не могу использовать статический метод реализованного интерфейса?
Как я прочитал в соответствующем учебнике, классы, реализующие такой интерфейс, могут использовать свои статические методы. Но, у меня есть проблема, которая здесь, я показать его в более простом примере, чем то, что у меня есть
public interface Interface1{
public static void printName(){
System.out.println("Interface1");
}
}
, когда я реализовать такой интерфейс
public class Class1 implements Interface1{
public void doSomeThing() {
printName();
}
}
я сталкиваюсь ошибка компиляции.
The method printName() is undefined for the type Class1
В чем проблема?
В вашем примере вы пытаетесь вызвать метод printName() ;. Ошибка компиляции, которую вы получаете, заключается в том, что в вашем классе Class1 не указан метод, называемый printName(); и компилятор пытается найти этот метод только в вашем классе. – foxt7ot
* «Как я прочитал в связанном учебнике, классы, которые реализуют такой интерфейс, могут использовать свои статические методы». * Они могут, да - как могут классы, которые * не реализуют интерфейс. В обоих случаях вы должны квалифицировать вызов ('Interface1.printName();'). Если учебник подсказывает, что это должно работать, это просто неправильно. –