小编Elo*_*ryx的帖子

使用CSS选择2个悬停颜色

我一直在尝试将默认的蓝色悬停颜色更改为我正在设计的网站中的Select2元素中的不同颜色,但到目前为止还没有成功.什么是正确的,工作的CSS选择器,它允许我改变Select2元素中悬停选择的背景颜色和字体颜色?先感谢您!

编辑:

.select2-drop:hover {
background-color: #efefef;
}
Run Code Online (Sandbox Code Playgroud)

我试过.select2-container,选择但没有成功.添加的代码会在悬停时更改整个下拉颜色,但我需要它才能更改悬停选项.

css colors background-color jquery-select2

10
推荐指数
2
解决办法
9186
查看次数

Java 8方法引用和重写方法

我已经在Java 8中使用lambdas和方法引用了一段时间,有一件事我不明白.这是示例代码:

    Set<Integer> first = Collections.singleton(1);
    Set<Integer> second = Collections.singleton(2);
    Set<Integer> third = Collections.singleton(3);

    Stream.of(first, second, third)
            .flatMap(Collection::stream)
            .map(String::valueOf)
            .forEach(System.out::println);

    Stream.of(first, second, third)
            .flatMap(Set::stream)
            .map(String::valueOf)
            .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

两个流管道做同样的事情,他们打印出三个数字,每行一个.不同之处在于它们的第二行,似乎只要它具有方法就可以简单地替换继承层次结构中的类名(Collection接口具有默认方法"stream",而未在Set接口中重新定义).我尝试了如果使用这些类一次又一次地重新定义方法会发生什么:

private static class CustomHashSet<E> extends HashSet<E> {
    @Override
    public Stream<E> stream() {
        System.out.println("Changed method!");
        return StreamSupport.stream(spliterator(), false);
    }
}

private static class CustomCustomHashSet<E> extends CustomHashSet<E> {
    @Override
    public Stream<E> stream() {
        System.out.println("Changed method again!");
        return StreamSupport.stream(spliterator(), false);
    }
}
Run Code Online (Sandbox Code Playgroud)

在更改第一,第二和第三个赋值以使用这些类之后,我可以替换方法引用(CustomCustomHashSet :: stream),并且毫不奇怪它们在所有情况下都打印出调试消息,即使我使用Collection :: stream也是如此.看来你不能用方法引用调用super,overriden方法.

运行时间有差异吗?什么是更好的做法,请参考顶级接口/类或使用具体的已知类型(Set)?谢谢!

编辑:为了清楚,我知道继承和LSP,我的困惑与Java 8中方法引用的设计有关.我首先想到的是,在方法引用中更改类会改变行为,它会调用它来自所选类的超级方法,但正如测试所示,它没有任何区别.更改创建的实例类型确实会改变行为.

java java-8 method-reference

9
推荐指数
1
解决办法
1641
查看次数