热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java11和IntelliJIDEA——有趣的搭配

Java11和IntelliJIDEA由TrishaGee于2018 年9月26日发表本周Java11发布了!感觉就像昨天我们对Java9说的一样。这个新的六个月发布节奏对Java
Java 11和IntelliJ IDEA

Trisha Gee于2018 年9月26日发表

本周Java 11发布了!感觉就像昨天我们对Java 9说的一样。这个新的六个月发布节奏对Java社区来说是一个很大的变化,而且是一个受欢迎的 – Java开发人员定期获得一小部分有趣的新功能。

《Java 11和IntelliJ IDEA——有趣的搭配》

Java 11

Java 11与之前的Java 10一样,有一个相当简短的新功能列表,这对我们的开发人员来说是件好事,因为它更容易看到对我们有用和有用的东西。从IntelliJ IDEA的角度来看,实际上只有一个功能受益于IDE中的一些额外支持,那就是JEP 323:Lambda参数的本地变量语法。我们已经在IntelliJ IDEA 2018.2的Java 11支持环境中写了这篇博文,但让我们再次快速介绍它。

在Java 8中引入lambda表达式时,您可以编写如下内容:

 

1

BiConsumer<Processor, String> consumer1 = (Processor x, String y) -> x.process(y);

包含x和y参数的类型信息。但是您不需要包含此类型信息,因为它已经是已知的 &#8211; 在这种情况下,左侧的BiConsumer使用泛型声明这两种类型。IntelliJ IDEA允许您根据需要删除这些类型:

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

Java 10 var为局部变量类型引入,我们将在本文稍后讨论,Java 11进一步考虑var了lambda表达式参数。这个的主要用例是当参数需要注释时。注释出现在类型旁边,因此在Java 11之前,这意味着带有注释的代码可能类似于:

 

1

BiConsumer<Processor, String> consumer = (@NotNull Processor x, @Nullable String y) -> x.process(y);

在Java 11中,我们可以使用var而不是参数类型来缩短它,IntelliJ IDEA可以为您执行此转换。请注意,当您在类型上按Alt + Enter时,建议执行此操作,但未在代码中将其标记为警告。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

Java 11:请注意,您使用的API可能不再存在

除了新的语言功能之外,了解Java 11实际上删除了功能也很重要。此步骤不仅会影响已弃用的功能和功能,还可以通过将一些大型部分移动到单独的依赖项(例如JavaFX)或期望应用程序使用已经可用的外部依赖项来简化语言的核心。(例如Java EE)。

无论是Java EE和CORBA组件已被删除。虽然CORBA可能没有被高度使用,但许多应用程序当然都使用Java EE。通常,这是在应用程序服务器或Java EE的某些其他特定实现的上下文中,但是某些应用程序和库使用Java EE的一小部分用于特定目的。例如,JAXB现在不是核心语言,您需要添加特定的依赖关系。有关此StackOverflow问题可能的替换依赖项的更多信息。

Java 10

Java 10仅在六个月前发布,我们中的许多人可能还没有开始使用它。

提醒一下,Java 10的主要新功能是引入了var,正如我们上面所看到的,它让我们使用var而不是特定的类型。这并没有在Java中引入动态类型,而是继续减少Java中样板的趋势,类似于引入菱形运算符,这意味着我们不再需要在等号的两边声明泛型类型。

IntelliJ IDEA var以多种方式支持。首先,检查可以选择用类型varvar类型替换类型。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

默认情况下,检查不会向您发出有关可以使用的var代码(或应具有显式类型的代码)的警告,但通常可以根据您团队的样式配置检查。

《Java 11和IntelliJ IDEA——有趣的搭配》

IntelliJ IDEA还可以帮助您导航使用的代码var。按住Ctrl /⌘并将鼠标悬停在上方var将显示变量的类型。

《Java 11和IntelliJ IDEA——有趣的搭配》

与任何其他类型一样,我们可以单击此处并导航到声明,或者我们可以使用Ctrl + B /⌘B导航到声明var。我们还可以使用快速文档(Ctrl + Q / F1)或快速定义(Ctrl + Shift + I /⌥Space)var来查看类型。

《Java 11和IntelliJ IDEA——有趣的搭配》

我们在IntelliJ IDEA和Java 10的网络研讨会上var详细介绍了使用情况。

Java 10还附带了一些对Optional和Collectors的一些很好的补充,所以如果你使用Streams API,那么值得看看这些新方法。

Java 9

去年9月发布的Java 9版本很大,人们可能会惊讶地发现10和11都有效地取代了9 &#8211; 一些JDK提供商(例如Oracle)将不会为Java 9(或Java 10)提供长期支持。想要直接从Java 8跳到Java 11的团队,在没有长期支持的情况下跳过版本,仍然需要了解Java 9中的变化,因为很明显它们将成为Java 11的一部分。

我们已经在这个博客上多次介绍过Java 9和IntelliJ IDEA,并且我们有一个网络研讨会的录音,其中涵盖了开发人员可能感兴趣的许多Java 9功能。当然,模块化是最着名的功能,但还有很多其他功能,包括新的便利工厂收集方法。就个人而言,这是我最喜欢的Java 9功能,方便的IntelliJ IDEA检查可以提供迁移代码以使用新方法。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

关于移民的说明

虽然这篇文章的目的是展示IntelliJ IDEA中的功能,使得使用Java 9,10和11更容易,而不是专门帮助开发人员将他们的代码迁移到这些版本,我们不得不投入这方面的一些建议。如果您希望在不久的将来使用Java 11,首先应确保所有依赖项都是最新的。许多JVM语言,库和框架必须对使用Java 9进行重大更改,而且还要更多地跟上Java 10和Java 11的更改。您应该能够以最小的方式更新您正在使用的库的版本对您自己的应用程序的影响,并且是能够使用最新版本的Java的重要一步。

如果您对从Java 8迁移感兴趣,我在其他地方写了几篇关于该主题的文章,特别是处理迁移到Java 9(当然,它也适用于Java 11):

  • 当然,使用IntelliJ IDEA 从Java 8迁移到Java Java for Java杂志。
  • 无痛迁移到Java Jigsaw模块 &#8211; InfoQ的案例研究,旨在为您的应用程序引入模块化。

Java 11可能只是刚刚发布,但IntelliJ IDEA已经完全支持它,并且更容易使用Java 11,10和9中的新功能。《Java 11和IntelliJ IDEA——有趣的搭配》

今天试试吧!您可以下载开源OpenJDK版本(由Oracle提供),该版本现在可供生产使用。

请注意,我在这里建议使用OpenJDK,因为Oracle已经更改了许可证,现在生产商业和开源JDK。请  阅读这篇文章了解更多信息,了解非常重要。

本文翻译自:Trisha Gee于https://blog.jetbrains.com/idea/2018/09/java-11-and-intellij-idea/的文章

 

转载需备注作者及出处


推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • JVM:33 如何查看JVM的Full GC日志
    1.示例代码packagecom.webcode;publicclassDemo4{publicstaticvoidmain(String[]args){byte[]arr ... [详细]
  • java中的try catch_Java中的trycatchfinally异常处理
    Java中的try-catch-finally异常处理一、异常处理异常(Exception):是在运行发生的不正常情况。原始异常处理:if(条件){处理办法1处理办法 ... [详细]
  • java——题型和考点大纲
    题型选择题10*2填空题10*1一二八十程序阅读题4*5读程序写结果派生类的构造方法static十十一简答题4*5十一十二十三(setmap)程序题3* ... [详细]
  • Project2.cpp:定义应用程序的入口点。#includeframework.h#includeProject2.h#defineMAX_LOADSTRING100全 ... [详细]
  • c语言怎样制作界面,c语言游戏界面怎样制作
    本文目录一览:1、C语言怎么做界面?2、C语言 ... [详细]
author-avatar
nnamyp_826
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有