Почему Java разрешает интерфейсам иметь статические поля только для чтения, в то время как интерфейсы.NET не могут?

Я сталкивающийся с примером кода в Java и это принесло мне вопрос.

Пример кода Java:

...
public interface CLibrary extends Library {
    CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
    void printf(String format, Object... args);
}

public static void main(String[] args) throws IOException {
    CLibrary.INSTANCE.printf("Hello, World\n");
}

Но в C# мы не можем записать как этот:

public interface IMyInterface {
    static readonly int staticInt = 5;                          // compile error
    static readonly SomeClass staticInstance = new SomeClass(); // compile error
}

Каково различие между этими двумя языками/платформами?

Какое разрешение на политику дизайна Java, чтобы иметь поля константы в интерфейсе или что препятствует тому, чтобы.NET имела это?

5
задан Peter Mortensen 20 August 2010 в 09:18
поделиться