java parser_java parser

package org.javaparser.examples.chapter2;

import com.github.javaparser.StaticJavaParser;

import com.github.javaparser.ast.CompilationUnit;

import com.github.javaparser.ast.NodeList;

import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;

import com.github.javaparser.ast.body.MethodDeclaration;

import com.github.javaparser.ast.type.ClassOrInterfaceType;

import com.github.javaparser.ast.visitor.VoidVisitor;

import com.github.javaparser.ast.visitor.VoidVisitorAdapter;

import com.github.javaparser.printer.PrettyPrinter;

import com.github.javaparser.printer.PrettyPrinterConfiguration;

import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import org.apache.commons.io.FileUtils;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.Collection;

import java.util.List;

public class VoidVisitorComplete {

static CompilationUnit cu;

public static void main(String[] args) throws Exception {

Collection files = FileUtils.listFiles(new File("C:\\Users\\mi\\code\\test-service\\src\\main"), new String[]{"java"}, true);

for(File f: files) {

// if(f.getName().equals("JsonSedesConfig.java")) {

cu = StaticJavaParser.parse(new FileInputStream(f));

VoidVisitor methodNameVisitor = new MethodNamePrinter();

methodNameVisitor.visit(cu, f);

// }

}

}

private static class MethodNamePrinter extends VoidVisitorAdapter {

@Override

public void visit(ClassOrInterfaceDeclaration d, File file) {

super.visit(d, file);

if(!d.isInterface()) {

NodeList nodeList = d.getImplementedTypes();

boolean hasSerializable = false;

for(ClassOrInterfaceType classOrInterfaceType: nodeList) {

// System.out.println("classOrInterfaceType:" + classOrInterfaceType);

if(classOrInterfaceType.getName().getIdentifier().equals("Serializable")) {

hasSerializable = true;

}

}

if(!hasSerializable) {

System.out.println("!hasSerializable:" + d.getName());

if(cu.getClassByName(d.getName().getIdentifier()).isPresent()) {

cu.getClassByName(d.getName().getIdentifier()).get().addImplementedType(Serializable.class);

PrettyPrinterConfiguration conf = new PrettyPrinterConfiguration();

// conf.setIndentSize(1);

// conf.setIndentType(PrettyPrinterConfiguration.IndentType.SPACES);

// conf.setPrintComments(false);

PrettyPrinter prettyPrinter = new PrettyPrinter(conf);

String content = prettyPrinter.print(cu);

System.out.println("content:" + content);

try {

FileUtils.writeStringToFile(file, content, "UTF-8");

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值