肝了兩天IntelliJ IDEA 2020,解鎖11種新姿勢, 真香!!!
阿新 • • 發佈:2020-07-17
> IDEA2020版本正式釋出已經有3個月了,當時由於各方面原因(太懶)也沒有去嘗試新功能。於是這個週末特意去在另一個電腦上下載了最新版的IDEA,並嘗試了一下。總的來說呢,體驗上明顯的提升。
作為一個大版本的升級,自然也增加了許多新功能。個人體驗了兩天,
- 支援Java14,並且可以直接通過IDE去直接下載JDK完成安裝配置
- 釋出官方版漢化外掛
- 導航欄優化可直接跳轉至方法或物件所在位置
- 新增Mono字型(人稱最適合程式設計師的字型)
- LightEdit模式
- 終端的視窗拆分(水平/垂直拆分)
- Zon(禪)模式
- javadoc文件的渲染a
- 新增新的主題
- 更加智慧的錯誤檢測
- Debug增強預處理
**啟用方法:https://shimo.im/docs/XXGr3gWJJ8kQjjPx**
## 支援Java14
### 支援Records
用於獲取宣告資料類的方法,只通過一行程式碼就可以獲取到資料。
```java
public class Range {
private final int min;
private final int max;
public Range(int min, int max) {
this.min = min;
this.max = max;
}
public int getMin() {
return min;
}
public int getMax() {
return max;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Range range = (Range) o;
return min == range.min && max == range.max;
}
@Override
public int hashCode() {
return Objects.hash(min, max);
}
@Override
public String toString() {
return "Range{" +
"min=" + min +
", max=" + max +
'}';
}
}
```
如上資料類,無參構造方法;初始化時對成員變數賦值;成員變數只有getter方法;覆寫了 超類 Object 的 equals 、hashCode、toString 方法。
使用Records只需要一樣程式碼即可以實現上述功能
```java
public record Range(int min, int max) {}
```
如果你的IDEA沒有配置JDK,可以直接在IDEA內部進行JDK下載安裝配置。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586b4a50a9dc0?w=806&h=368&f=png&s=157830)
### instanceof模式簡化
我們經常會使用instanceof運算子將引用變數與型別進行比較的程式碼。如果結果為true ,那麼就可以將其顯式轉換為與之比較的型別。
```java
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s);
}
```
Java 14中的instanceof模式匹配引入了instanceof運算子的模式變數。如果instanceof條件為true,則模式變數將繫結到要比較的變數,從而避免了顯式強制轉換以使用其成員的需要。
於是我們可以改成這種寫法
```java
if (obj instanceof String s) {
System.out.println(s);
}
```
## 官方版漢化外掛
官方這次更新之後支援了漢化版,漢化需要藉助JetBrains官方提供的Chinese (Simplified) Language Pack EAP外掛。可通過安裝外掛進行漢化
安裝方法:
在Plugins 搜尋“Chinese”第一個就是我們漢化時需要安裝的外掛。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586c1f716a24a?w=979&h=720&f=png&s=284257)
我在另外一臺電腦試著安裝時,發現搜尋不到這個外掛。如果有同學遇到同樣的問題,可以去IDEA外掛中心進行搜尋安裝
地址:https://plugins.jetbrains.com/idea
![](https://user-gold-cdn.xitu.io/2020/7/17/173586c4159ad5e3?w=1080&h=597&f=png&s=175310)
按照提示操作,下載相應的版本,然後進行安裝即可,安裝方式有兩種
- 直接將外掛拖入至IDEA介面即可
- 在plugins介面通過匯入本地檔案進行安裝
![](https://user-gold-cdn.xitu.io/2020/7/17/173586c84652f112?w=982&h=341&f=png&s=94080)
漢化之後的介面如下圖所示,目前來看大部分內容已經漢化,還剩一點點選單內容沒有完成漢化。使用漢化之後突然竟然感覺不太會用了,我個人不建議使用漢化的。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586ca7e8d9652?w=982&h=341&f=png&s=94080)
![](https://user-gold-cdn.xitu.io/2020/7/17/173586cb719e10ba?w=980&h=685&f=png&s=185968)
## 導航欄優化
在IDEA2020之後的版本可以通過點選.java檔案導航到具體的方法或者物件所在的位置。再此之前的版本可以通過Structure介面進行位置跳轉
![](https://user-gold-cdn.xitu.io/2020/7/17/173586ce061a2acd?w=767&h=452&f=png&s=232840)
## 新增Mono字型
一款被稱為目前最適合程式設計師的字型,新的版本下載之後自帶了Mono字型。
長時間使用程式碼期間減輕眼睛疲勞的問題。同時考慮了字母的大小和形狀等問題;它們之間的空間量,自然以等寬字型設計的平衡;一些看起來不必要的細節和符號之間不清楚的區別,例如I和l。
對於舊版本IDEA,如果想自行安裝Mono字型,可以通過官網自行下載安裝
地址:https://www.jetbrains.com/lp/mono/
![](https://user-gold-cdn.xitu.io/2020/7/17/173586d19809902d?w=693&h=468&f=png&s=75521)
## LightEdit模式
可以理解為是一個輕量級的編輯器,可以在不載入專案的情況下,開啟某個檔案。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586d3ce3869a7?w=556&h=257&f=png&s=97163)
這樣我們就可以用IDEA以編輯器的形式去開啟Java檔案,
![](https://user-gold-cdn.xitu.io/2020/7/17/173586d6a59aa8c8?w=1080&h=602&f=png&s=135319)
**如果需要開啟並載入檔案所在專案,只需要alt+enter之後選擇Open file in project 即可。**
## 終端的視窗拆分
這個更新,感覺真的提升了不少效率,多個終端在同一介面節省了來回切換的麻煩。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586dca30a5beb?w=1012&h=405&f=png&s=153137)
使用時是這樣的,有沒有感覺效率提升了不少呢?
![](https://user-gold-cdn.xitu.io/2020/7/17/173586de049773df?w=1080&h=338&f=png&s=166402)
## Zon(禪)模式
一個可以讓程式設計師全身心投入到寫程式碼,不受外界干擾的一種模式。
啟用方式如下圖所示:
![](https://user-gold-cdn.xitu.io/2020/7/17/173586e12c74f118?w=592&h=132&f=png&s=61388)
- Enter/Exit Presentation Mode:進入/退出 展示模式
- Enter/Exit Distraction Free Mode:進入/退出 免打擾模式
- Enter/Exit Full Screen:進入/退出 全屏模式
- Enter/Exit Zen Mode:進入/退出 禪模式(一個終極模式,包含以上3種模式)
下圖為禪模式,整個螢幕就是你的編輯頁面,帶上耳機開啟禪模式,真的會有一種瞬間全世界都清淨的感覺!
![](https://user-gold-cdn.xitu.io/2020/7/17/173586e6977687e9?w=1080&h=674&f=png&s=211567)
## javadoc文件的渲染
當我們去閱讀原始碼的註釋或者一些幫助文件API,可能含有各種標記,影響閱讀,而通過javadoc渲染功能之後,會自動祛除一些不必要的標題。並且可以修改字型的大小,方便閱讀!
如下是SimpleDateFormat中javadoc的一部分,是不是給人一種無法讀下去的感受。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586e946c479bb?w=1080&h=607&f=png&s=384225)
用了JavaDoc之後呢,它就是這樣的了
![](https://user-gold-cdn.xitu.io/2020/7/17/173586eaeba84d74?w=687&h=667&f=png&s=411473)
## 新增新的主題
在view中點選Quick Switch Scheme,然後在彈出的對話方塊中點選Themes,可以更換IDEA的主題。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586ed56dfcd55?w=504&h=400&f=png&s=174615)
![](https://user-gold-cdn.xitu.io/2020/7/17/173586ee25de1aa1?w=117&h=107&f=png&s=14113)
新增了統一的IntelliJ Light主題,這個主題已經在不同的作業系統中完全統一了。不過就我個人而言,還是更新換用Darcula黑灰色主題風格。
## 錯誤檢測
比如我們在寫日期轉化的時候不小心寫錯了,如下:
```java
public static void main(String[] args){
SimpleDateFormat sdf =
new SimpleDateFormat("YYYY-MM-dd");
System.out.println("this is a boy");
}
```
這裡呢,IDEA就會在YYYY字元上進行高亮顯示,滑鼠放上去就會提示我們,點選下方的Replace ‘YYYY’ with ‘yyyy’ 會自動幫我們進行替換。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586f479614e03?w=903&h=163&f=png&s=97460)
## Debug增強預處理
如下程式碼
```java
public static void main(String[] args) {
int a = 0;
while (a < 100) {
if (a == 3) {
System.out.println("+++++");
}
a++;
}
}
```
在第5行加了斷點,當我們debug啟動時,第6行就會進行與判斷False。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586f9d6ce4102?w=746&h=266&f=png&s=92894)
執行到a = 3時,會與判斷為True。
![](https://user-gold-cdn.xitu.io/2020/7/17/173586fb81a78e25?w=756&h=249&f=png&s=87073)
## 總結
以上就是我這兩天體驗了一下IDEA2020版本之後的測評清單,還有很多功能需要在平時的使用中進行挖掘。如果大家有什麼新功能要分享歡迎留言區進行留言。最後呢,建議大家最好不要使用公司的電腦進行升級,以免引起不必要的麻煩耽誤了正常工作。
最後呢,我錄製了一個視訊上傳至B站了,大家可以去看一下。順便記得點贊哦
https://www.bilibili.com/video/BV1ua4y1a7d7/
### 文末福利
[肝了全網,43份Java思維導圖,需要自取!!!](https://mp.weixin.qq.com/s?__biz=MzU1ODMxODE3OQ==&mid=2247483684&idx=1&sn=18d1c3a814f8d2335d6aa3f4d5ffa647&chksm=fc291628cb5e9f3e496611859f2a1df301688f45d981f72ffa295631609f7536f17452e68828&scene=21#wechat_redirect)
[《Java面試手冊》V1.0版本,高清PDF免費獲取](https://mp.weixin.qq.com/s?__biz=MzU5NTgzMDYyMA==&mid=2247487331&idx=1&sn=0d669d0cf50eedb6a7ee99317745fd9d&chksm=fe6abd50c91d3446b17269916c5d2c166144ec2d7872bd55f4f19749f147321336e36f95ec21&token=1534293042&lang=zh_CN&scene=21#wechat_r