@FunctionalInterface interface Displayable { // 定義一個抽象方法和預設方法 void display(); default int add(int a, int b) { return a + b; } } public class LambdaAndInner { private int age = 12; private static String name = "C語言中文網"; public void test() { String url = "http://c.biancheng.net/"; Displayable dis = () -> { // 存取的區域性變數 System.out.println("url 區域性變數為:" + url); // 存取外部類的範例變數和類變數 System.out.println("外部類的 age 範例變數為:" + age); System.out.println("外部類的 name 類變數為:" + name); }; dis.display(); // 呼叫dis物件從介面中繼承的add()方法 System.out.println(dis.add(3, 5)); } public static void main(String[] args) { LambdaAndInner lambda = new LambdaAndInner(); lambda.test(); } }輸出結果為:
url 區域性變數為:http://c.biancheng.net/
外部類的 age 範例變數為:12
外部類的 name 類變數為:C語言中文網
8
// 嘗試呼叫介面中的預設方法,編譯器會報錯
System.out.println(add(3, 5));
public void test() { String url = "http://c.biancheng.net/"; Displayable dis = new Displayable() { @Override public void display() { // 存取的區域性變數 System.out.println("url 區域性變數為:" + url); // 存取外部類的範例變數和類變數 System.out.println("外部類的 age 範例變數為:" + age); System.out.println("外部類的 name 類變數為:" + name); System.out.println(add(3, 5)); } }; dis.display(); }