Я пытаюсь понять поведение ниже, все, что я пытаюсь, это инициализировать статическую переменную интерфейса с помощью метода перечисления.
enum Hello {
ProfileResolver();
public Hello resolve() {
System.out.println("resolve method called!!!!");
return ProfileResolver;
}
}
public interface Resolver{
Hello hello = Hello.ProfileResolver.resolve(); // this should called when creating an instace of any implementation
}
Класс внедрения, как показано ниже
public class Impl implements Resolver{
}
а теперь если
public static void main(String[] arg){
Resolver resolver = new Impl();
}
Теперь в этот момент я ожидал, что непосредственно перед инициализацией объекта Impl
переменная приветствия интерфейса должна инициализировать и разрешить вызванный метод, но это не так. И когда я объявляю Resolver как класс вместо интерфейса, он работает, как и ожидалось. Может ли кто-нибудь помочь мне попытаться понять?
hello
в вашем интерфейсе — этоstatic
иfinal
. Эти модификаторы являются неявными для свойств в интерфейсе. - person ernest_k   schedule 05.04.2021