찾다

 >  Q&A  >  본문

Java1.8 JDK源码中,对两个类进行 按位与 操作是什么意思?

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中文网2767일 전466

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 17:11:08

    이것은 비트 AND가 아니라 Java8의 새로운 구문으로 두 클래스(인터페이스)가 동시에 만족된다는 의미입니다. 다음과 동일:

    으아악

    두 번째 질문, equals 메소드가 Object에 구현되었습니다. Comparator에서 "불필요"로 나열된 이유는 주로 강제보다는 알림을 위한 것입니다. Object의 기본 구현이 부적절할 수 있고 수정이 필요한 경우가 많기 때문입니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:11:08

    JAVA8의 새로운 구문입니다. 클래스에서 비트 AND를 수행하는 것이 어떻게 가능합니까

    회신하다
    0
  • 취소회신하다