国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

分享代碼片段:如何對(duì)自動(dòng)生成的java代碼做自動(dòng)格式化,以達(dá)到接近手寫的效果

lykops / 2581人閱讀

摘要:原文鏈接如題,有的時(shí)候,我們會(huì)采用自動(dòng)生成代碼的方式來(lái)完成一些任務(wù),比如根據(jù)業(yè)務(wù)數(shù)據(jù)自動(dòng)生成調(diào)用的供用戶下載使用這樣自動(dòng)生成的代碼,如果未經(jīng)格式化處理,基本上是不可讀的正好,我們常用的,快捷鍵就能自動(dòng)格式化代碼那么,下面這段代碼,就是將的這

原文鏈接:https://gist.github.com/pfmiles/653c8b59e795698c867d

如題,有的時(shí)候,我們會(huì)采用自動(dòng)生成java代碼的方式來(lái)完成一些任務(wù),比如根據(jù)業(yè)務(wù)數(shù)據(jù)自動(dòng)生成調(diào)用api的sdk供用戶下載、使用;
這樣自動(dòng)生成的代碼,如果未經(jīng)格式化處理,基本上是不可讀的;

正好,我們常用的eclipse,快捷鍵"ctrl + shift + F"就能自動(dòng)格式化java代碼;
那么,下面這段代碼,就是將eclipse的這個(gè)功能模塊給“摳”出來(lái)多帶帶調(diào)用,達(dá)到格式化java代碼的目的:

package test;

import java.util.Map;

import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.text.edits.TextEdit;

/**
 * 調(diào)用eclipse jdt core對(duì)生成的java源碼進(jìn)行格式化
 * 
 * @author pf-miles 2014-4-16 下午2:48:29
 */
public class JavaCodeFormattingUtil {

    /**
     * 嘗試對(duì)傳入的JavaSourceFile格式化,此操作若成功則將改變傳入對(duì)象的內(nèi)容
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static void tryFormat(JavaSourceFile src) {
        Map m = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
        m.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_6);
        m.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_6);
        m.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_6);
        m.put(DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT, "160");
        m.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE);

        String code = null;
        IDocument doc = null;
        try {
            code = src.getCharContent(true).toString();
            CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(m);
            TextEdit textEdit = codeFormatter.format(CodeFormatter.K_UNKNOWN, code, 0, code.length(), 0, null);
            if (textEdit != null) {
                doc = new Document(code);
                textEdit.apply(doc);
                src.setCode(doc.get());
            }
        } catch (Exception e) {
            throw new RuntimeException("Error occured while formatting code: " + src.toUri(), e);
        }
    }
}

其中“code = src.getCharContent(true).toString();”這一行先不必關(guān)心"src"是個(gè)什么對(duì)象,那是我們自定義的東西,這里的重點(diǎn)只需要得到“code”,然后后面的操作完全是針對(duì)"code"這個(gè)string形式的java代碼而做;

其中還能對(duì)格式化屬性做一些配置, 如:
VERSION_1_6是指對(duì)應(yīng)的java版本;
而DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT則指一行最多到多長(zhǎng)就會(huì)自動(dòng)換行;
DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR是說(shuō)想要使用什么字符來(lái)做縮進(jìn),一般都選擇空格或tab;
這些都可以根據(jù)需求隨意調(diào)整;

當(dāng)然,上述這些代碼的運(yùn)行,是需要依賴eclipse的格式化模塊功能庫(kù)的,這個(gè)庫(kù),目前沒(méi)有統(tǒng)一的依賴地址;可以根據(jù)類名上網(wǎng)隨便搜一個(gè)可用的maven倉(cāng)庫(kù)依賴即可

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64303.html

相關(guān)文章

  • Java - 收藏集 - 掘金

    摘要:強(qiáng)大的表單驗(yàn)證前端掘金支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證,以及。面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別的種設(shè)計(jì)模式全解析后端掘金一設(shè)計(jì)模式的分類總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類創(chuàng)建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。 強(qiáng)大的 Angular 表單驗(yàn)證 - 前端 - 掘金Angular 支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證,maxlength、minlength、required 以及 patt...

    XiNGRZ 評(píng)論0 收藏0
  • 自動(dòng)代碼生成工具 Snips 開(kāi)發(fā)實(shí)踐

    摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...

    only_do 評(píng)論0 收藏0
  • 自動(dòng)代碼生成工具 Snips 開(kāi)發(fā)實(shí)踐

    摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...

    qc1iu 評(píng)論0 收藏0
  • 自動(dòng)代碼生成工具 Snips 開(kāi)發(fā)實(shí)踐

    摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...

    pepperwang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<