Java 11 - 基于嵌套的访问


Java 11 引入了嵌套类的概念,我们可以在类中声明类。这种类的嵌套允许将要在一个地方使用的类按逻辑分组,从而使它们更具可读性和可维护性。嵌套类可以有四种类型 -

  • 静态嵌套类

  • 非静态嵌套类

  • 本地课程

  • 匿名类

Java 11 还提供了 Nestmate 的概念,以允许嵌套类的通信和验证。

考虑以下示例 -

ApiTester.java

import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;

public class APITester {
   public static void main(String[] args) {		
      boolean isNestMate = APITester.class.isNestmateOf(APITester.Inner.class);
      boolean nestHost = APITester.Inner.class.getNestHost() == APITester.class;

      System.out.println(isNestMate);
      System.out.println(nestHost);

      Set<String> nestedMembers = Arrays.stream(APITester.Inner.class.getNestMembers())
         .map(Class::getName)
         .collect(Collectors.toSet());
      System.out.println(nestedMembers);
   }
   public class Inner{}
}

输出

true
true
[APITester$Inner, APITester]