在做一些基本的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)
输出2和2.这里没什么新鲜的.
但是当我这样做时:
场景#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)
输出2和3
问题:两个输出不应该相同吗?我错过了什么吗?
为了完整起见: 场景#3
Supplier<Integer> s1 = new Supplier<Integer>() {
@Override
public Integer …
Run Code Online (Sandbox Code Playgroud) 我在创建正则表达式 (Java) 以匹配以下模式时遇到问题:
有效输入:
到目前为止我所拥有的:
[\\d{1,2}MS?\\s]{7}
它强制执行长度并允许空格,但仅此而已。任何帮助将不胜感激。