私は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;
}
あいまいなフィールドが継承されるようにしています。しかし、フィールドを参照してアクセスしようとすると、コンパイル時にエラーが発生します。曖昧なフィールドのコンパイル時にエラーが発生する。私の質問は、曖昧なフィールドが継承されたときにコンパイラが不平を言っていない最初のポイントです。なぜアクセス時間に、それはこの問題を与えているのですか?クラスを使用するときに同じことをしても、それは可能です。なぜインタフェースの場合はありませんか?私の主張は、最初の瞬間にのみ許すべきではないということです。この概念の明確化はかなり役に立ちます。インタフェースで
私は歴史的な理由はわかりませんが、この例では** all **ではなく、定数があいまいであることに注意してください。だから、あいまいな定数を使わずにインターフェイスをミックスして使用したい場合はどうなりますか? –