2014-09-19 4 views
0

Как известно, в java 1.8 статические методы разрешены в интерфейсах, я видел некоторые ответы, например static methods defined in interface from jdk 1 8 why did they need to do so
, но я не удовлетворен.
Кроме того, я думаю, что это может вызвать такие проблемы, как:Статические методы, добавленные в интерфейсы в java 1.8

public interface MyInterface{ 
     public static void myMethod(); 
    } 

    class MyClass{ 
    MyInterface.myMethod(); // since myMethod is static but a huge error is waiting for us here ? 
    } 

Но я все еще думаю, что есть выход из этого, так как это добавляется с помощью профессионалов, так может кто-нибудь, пожалуйста, объясните как оракул решает этот вопрос и в чем же необходимость добавить это?
Спасибо в adavance.


Я не использовал Java 1.8, так что я никогда не знал, что статические методы в Java должен быть определен не только объявил, я всегда думал, что интерфейсам как Pure абстрактного класса Я думаю, именно поэтому идея определить метод казался мне странным. Спасибо за помощь ! ,

+5

Вы не показали, в чем проблема * * ... –

+0

Это хороший вопрос, который я думаю. –

+2

Пробовали ли вы _huge error_? – Narmer

ответ

1

Говоря о «что необходимо добавить» статические методы:

Цитирование из http://www.informit.com/articles/article.aspx?p=2191423

До Java 8 позволило объявить статические методы в интерфейсов, это было обычной практикой место эти методы в сопутствующем классе . Например, класс java.util.Collections является компаньоном для интерфейса java.util.Collection и объявляет статические методы , которые были бы более подходящими в соответствующих интерфейсах Java Collections Framework. Вам больше не нужно предоставлять свои собственные классы вспомогательной утилиты . Вместо этого вы можете разместить статические методы в соответствующих интерфейсах, что является хорошей привычкой к совершенствованию.

также статические методы в интерфейсах хороши для обеспечения вспомогательных методов, как проверка нулевой, сбора сортировки и т.д. И главное, что обеспечивает безопасность, отрицая классы реализации переопределения его.

+0

Спасибо! поняли концепцию – user3921830

0

Здесь нет проблем, статический метод принадлежит классу, а не его членам, поэтому единственной ошибкой здесь является тот факт, что вы не определили метод itselt (только что объявили его, что запрещено с помощью статических методов).