小编vic*_*nes的帖子

Lambda的行为与匿名内部类不同

在做一些基本的lambda练习时,一个看似相同的匿名内部类的输出给了我一个不同于lambda的输出.

interface Supplier<T> {

    T get(T t);
}
Run Code Online (Sandbox Code Playgroud)

场景#1

Supplier<Integer> s1 = new Supplier<Integer>() {
    @Override
    public Integer get(Integer t) {
        return t;
    }
};
Supplier<Integer> s2 = t -> t;
System.out.println(s1.get(2));
System.out.println(s2.get(2));
Run Code Online (Sandbox Code Playgroud)

输出22.这里没什么新鲜的.


但是当我这样做时:

场景#2

Supplier<Integer> s1 = new Supplier<Integer>() {
    @Override
    public Integer get(Integer t) {
        return t++;
    }
};
Supplier<Integer> s2 = t -> t++;
System.out.println(s1.get(2));
System.out.println(s2.get(2));
Run Code Online (Sandbox Code Playgroud)

输出23

问题:两个输出不应该相同吗?我错过了什么吗?


为了完整起见: 场景#3

Supplier<Integer> s1 = new Supplier<Integer>() {
    @Override
    public Integer …
Run Code Online (Sandbox Code Playgroud)

java lambda anonymous-inner-class java-8

25
推荐指数
1
解决办法
1842
查看次数

匹配固定长度的正则表达式并添加尾随空格

我在创建正则表达式 (Java) 以匹配以下模式时遇到问题:

  1. 1位或2位数字开头
  2. 后跟字母MMS
  3. 长度必须为 7 个字符。最后的填充必须用空格完成。

有效输入:

  • 2M、2MS、10M、10MS(以及它们各自的尾随空格)

到目前为止我所拥有的:

[\\d{1,2}MS?\\s]{7}

它强制执行长度并允许空格,但仅此而已。任何帮助将不胜感激。

java regex

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

标签 统计

java ×2

anonymous-inner-class ×1

java-8 ×1

lambda ×1

regex ×1