我有两个问题.首先,请考虑以下代码.
public class Test{
private static final List<String> var = new ArrayList<String>() {{
add("A");
add("B");
System.out.println("INNER : " + var);
}};
public static void main(String... args){
System.out.println("OUTER : " + var);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它给出了我的输出
INNER : null
OUTER : [A, B]
Run Code Online (Sandbox Code Playgroud)
任何人都可以详细说明为什么INNER在确定"A"和"B"添加到的时候为什么是null和执行collection?
其次,我在上面的代码中做了一些修改并修改为一个以下(只是把add方法放在第一个括号内)
public class Test{
private static final List<String> var = new ArrayList<String>() {
public boolean add(String e) {
add("A");
add("B");
System.out.println("INNER : " + var); return true;
};
};
public static void main(String... args){ …Run Code Online (Sandbox Code Playgroud) 为了探索 lambda 及其工作原理,我编写了下面的代码。
public class Foo { // enclose class
public static void main(String[] args) {
System.out.println(new Foo().new InnerFoo());
IntSupplier intSupplier = () -> 42;
System.out.println(intSupplier);
}
class InnerFoo{} // inner class
}
Run Code Online (Sandbox Code Playgroud)
执行代码后,我看到以下输出。
Foo$InnerFoo@3af49f1c
Foo$$Lambda$15/0x0000000840064c40@13221655
Run Code Online (Sandbox Code Playgroud)
我基本上有两个基于输出的问题。