Java1.8 JDK源码中,对两个类进行 按位与 操作是什么意思?
PHP中文网
PHP中文网 2017-04-17 17:09:08
0
2
456

Java容器类库中的Map接口(java\util\Map.java)中有一个Entry接口(java\util\Map.java),其中有几个接口方法用到了类和类的按位与操作,即类和类之间有 & 操作符,后面是一个lambda表达式,如下图:

源码如下:

        public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> c1.getKey().compareTo(c2.getKey());
        }

请问:
1)对两个类进行按位与操作时什么意思?
2)Comparator接口(java\util\Comparator.java)有两个未实现方法,一个传入一个参数,一个传入两个参数,该lambda表达式是怎么工作的?只实现了一个方法就可以使用吗?Comparator部分源码如下:

public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
}
PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
洪涛

これはビット単位の AND ではなく、Java8 の新しい構文であり、2 つのクラス (インターフェース) が同時に満たされることを意味します。以下と同等:

リーリー

2 番目の質問、equals メソッドは Object に実装されています。 Comparator で「不要」としてリストされている理由は、強制ではなく主に注意のためです。Object のデフォルトの実装は不適切である可能性があり、多くの場合変更が必要になるためです。

いいねを押す +0
伊谢尔伦

これは JAVA8 の新しい構文です。クラスでビット単位の AND

を行うことはどのように可能ですか?
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!