Я просматриваю раздел JLS 9.3.1, и я столкнулся с интересной концепцией неоднозначных унаследованных полей. Это пример из JLS
interface BaseColors {
int RED = 1, GREEN = 2, BLUE = 4;
}
interface RainbowColors extends BaseColors {
int YELLOW = 3, ORANGE = 5, INDIGO = 6, VIOLET = 7;
}
interface PrintColors extends BaseColors {
int YELLOW = 8, CYAN = 16, MAGENTA = 32;
}
interface LotsOfColors extends RainbowColors, PrintColors {
int FUCHSIA = 17, VERMILION = 43, CHARTREUSE = RED+90;
}
Это позволяет наследовать неоднозначные поля. Но когда я пытаюсь ссылаться на поле и получать доступ к нему, он дает ошибку времени компиляции. Предоставление ошибки времени компиляции для неоднозначных полей. Мой вопрос, в первую очередь, почему компилятор не жаловался, когда неоднозначное поле было унаследовано. Почему во время доступа он дает эту проблему? Если мы делаем то же самое при использовании классов., Это позволяет. Почему бы и нет в случае интерфейсов. Я хочу сказать, что он не должен допускать только в первый момент. Разъяснение этой концепции будет весьма полезным.