作為Java開發,經常需要根據資料庫某個欄位獲取對應的列舉類,然後就要在列舉類新增如下的方法:
public static TestEnum getByCode(Integer code) {
return Arrays.asList(values()).stream().filter(i -> i.getCode().equals(code)).findFirst().orElse(null);
}
這種方法在不同列舉類的實現都是很相似的,有什麼辦法可以避免這種重複勞動呢?
於是,我就想到了寫一個Idea外掛去自動生成程式碼,EnumHepler應運而生。
目前該外掛已經發布,在Marketplace搜尋EnumHepler下載安裝即可體驗,有其他建議大家也可以留言。
使用教學:
該專案程式碼不是很複雜,就不在這裡貼出來了,如果你感興趣的話可以檢視原始碼,網上也有一些不錯的外掛開發教學這裡簡單列一下。
相關教學:
你們要的Intellij IDEA 外掛開發祕籍,來了!
IDEA外掛開發實戰
官方檔案:https://plugins.jetbrains.com/docs/intellij/plugins-quick-start.html
但是在開發過程中還是踩了不少坑,覺得有必要在這裡記錄下。
問題1: 外掛開發建立專案有兩種方式,第一種是選擇Intelij Platform Plugin直接建立,第二種是選擇Gradle的方式建立,開始選擇了第一種方式,ProjectSDK選擇時沒有IntelliJ Platform Plugin SDK這個選項!
解決方案: 後面發現這個SDK是需要手動建立的,Project Structure-->SDKs-->點選+號新增。而且對於這兩種方式,如果你不需要引入其他第三方依賴,那麼推薦第一種方式建立專案更簡單,畢竟Gradle設定太麻煩而且有很多人不熟悉Gradle。
問題2: 控制檯顯示Caused by: java.lang.ClassNotFoundException
解決方案: 後來發現包依賴不全,需要在plugin.xml新增如下兩個包。
<depends>com.intellij.modules.lang</depends>
<depends>com.intellij.modules.java</depends>
問題3: 通過New-->Plugin Devkit-->Action建立的action,快捷鍵觸發無效!
解決方案: 看了官方檔案才發現,idea建立的action設定是不全的,只有預設的情況,我的筆電是Mac OS系統需要在plugin.xml新增設定如下:
<keyboard-shortcut
keymap="$default"
first-keystroke="control shift J"/>
<!-- ...except the "Mac OS X" keymap and its children. -->
<keyboard-shortcut
keymap="Mac OS X"
first-keystroke="control shift J"
remove="true"/>
<!-- The "Mac OS X 10.5+" keymap and its children will have only
this keyboard shortcut for this action. -->
<keyboard-shortcut
keymap="Mac OS X 10.5+"
first-keystroke="control shift J"
replace-all="true"/>
問題4: 當時程式碼寫完功能也測試完了,準備打包才發現找不到打包方式