Eclipse代码格式化程序不适用于Java Generics代码?

时间:2014-10-17 10:55:25

标签: java eclipse

我使用eclipse代码格式jar文件来格式化java代码并在maven dependecy下使用

<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.7.1</version>  
</dependency>

当我尝试格式化以下代码时

package com.editor.test;

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

public class FormatterTest {
    public static void main(String[] args) {
        String code = "import java.util.Map; public class TestFormatter{public static void main(String[] args){Map<String,Object> map=null;System.out.println(\"Hello World\");}}";
        CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(null);
        TextEdit textEdit = codeFormatter.format(CodeFormatter.K_COMPILATION_UNIT, code, 0, code.length(), 0, null);
        IDocument doc = new Document(code);

        try {
            textEdit.apply(doc);
            System.out.println(doc.get());
        } catch (MalformedTreeException e) {
            e.printStackTrace();
        } catch (BadLocationException e) {
            e.printStackTrace();
        }
    }
}

但是当我添加泛型时,eclipse代码格式无法格式化代码。任何人都能说出这个问题的解决方案。

1 个答案:

答案 0 :(得分:3)

您没有为ToolFactory.createCodeFormatter指定任何源级别或合规性级别选项,因此您可能会获得仅支持原始Java而没有泛型的格式化程序。

ToolFactory.createCodeFormatter的JavaDoc说:

  

给定的选项至少应该提供源级别   (JavaCore.COMPILER_SOURCE),编译器合规级别   (JavaCore.COMPILER_COMPLIANCE)和目标平台   (JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM)。没有这些选择,它   代码格式化程序无法知道它是什么类型的源代码   需要格式化。

所以你需要这样做。