Java新特性(2):Java 10以后
作者:互联网
再来看看Java11对http的更新,例如通过http访问某度的主页:
// 包名由Java 9的jdk.incubator.http改为Java 11的java.net.http HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://www.baidu.com/")) .build(); client.sendAsync(request, BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println) .join();
(现在Lambda表达式几乎无处不在了,如果还不会的话搞不好以后Java代码都看不懂了)
Java11有如下变更:
除了http之外,比较有用的就两个:基于嵌套的访问控制(181)和飞行记录器(328)。
所谓基于嵌套的访问控制,其实就是能够判断某个类是不是另一个类的嵌套类。
/** * 基于嵌套的访问控制 * * @author 湘王 */ public class OuterClass { class InnerClass { public InnerClass() { } public void printOuterInt() { System.out.println("InnerClass"); } } public static void main(String[] args) { Class<?> outerClass = OuterClass.class; // 得到宿主类 Class<?> clazz1 = InnerClass.class.getNestHost(); System.out.println(clazz1.getName()); // 得到内部类成员 Class<?>[] clazz2 = OuterClass.class.getNestMembers(); for (Class<?> class1 : clazz2) { System.out.println(class1.getName()); // 判断类是否是某个类的嵌套类 System.out.println(outerClass.isNestmateOf(class1)); } } }
就是这样子用的。
所谓飞行记录器,就是模仿飞机上的黑匣子,是一种低开销的事件信息收集框架,它原来是JDK商业版(是一种大厂之间合作收费的版本)中的一项分析工具,主要数据源于应用程序、JVM和OS,是在故障发生后,能够从事件记录文件中提取出有用信息对故障进行分析。到了Java11,它索性就免费了。
/** * 飞行记录器 * * @author 湘王 */ public class FlightRecorder { @Label("Hello World")