inicjalizacja statyczna w interfejsie

Kiedy próbowałem napisać coś takiego:

public interface MyInterface {
    static {
        System.out.println("Hello!");
    }
}

kompilator nie mógł go skompilować.

Ale kiedy napisałem coś takiego:

interface MyInterface {
    Integer iconst = Integer.valueOf(1);
}

i zdekompilowałem go, widziałem inicjalizację statyczną:

public interface MyInterface{
    public static final java.lang.Integer i;

    static {};
      Code:
      0:   iconst_1
      1:   invokestatic    #1; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      4:   putstatic       #2; //Field i:Ljava/lang/Integer;
      7:   return
}

Czy mógłbyś mi wyjaśnić to zachowanie?

questionAnswers(5)

yourAnswerToTheQuestion