com.github.andyshao.system.ClassAnalysis Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of Gear Show documentation
Show all versions of Gear Show documentation
Enhance and formating the coding of JDK
The newest version!
package com.github.andyshao.system;
import com.github.andyshao.reflect.ClassOperation;
import com.github.andyshao.reflect.FieldOperation;
import com.github.andyshao.reflect.MethodOperation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
/**
*
* Title:
* Descript:
* Copyright: Copryright(c) Apr 30, 2016
* Encoding:UNIX UTF-8
* -classPrint print class info
* java -jar GearXX.jar -classPrint [className] print all info
* java -jar GearXX.jar -classPrint --methods [className] print methods define info
* java -jar GearXX.jar -classPrint --fields [className] print fields define info
* java -jar GearXX.jar -classPrint --class [className] print class define info
* @author Andy.Shao
*
*/
public class ClassAnalysis implements Task {
private static final String CLASS = "--class";
private static final String FIELDS = "--fields";
/**keywords*/
public static final String KEY_WORDS = "-classPrint";
private static final String METHODS = "--methods";
private volatile Task nextTask = Task.EMPTY_TASK;
@Override
public Task getNextTask() {
return this.nextTask;
}
@Override
public boolean isDuty(String[] args) {
if (args == null || args.length == 0) return false;
else return args[0].equals(ClassAnalysis.KEY_WORDS);
}
@Override
public void process(String[] args) {
String[] commands = null;
Class> clz = null;
if (args.length <= 2 || !args[1].startsWith("--")) {
commands = new String[] { ClassAnalysis.CLASS , ClassAnalysis.FIELDS , ClassAnalysis.METHODS };
clz = ClassOperation.forName(args[1]);
} else {
int i = 1;
List tmp = new ArrayList<>();
for (; i < args.length ; i++)
if (args[i].startsWith("--")) tmp.add(args[i]);
else break;
clz = ClassOperation.forName(args[i]);
commands = tmp.toArray(new String[tmp.size()]);
}
for (String command : commands)
switch (command) {
case METHODS:
Method[] methods = MethodOperation.getAllMethods(clz);
for (Method method : methods) {
StringBuilder info = new StringBuilder();
final int modifiers = method.getModifiers();
if (Modifier.isPublic(modifiers)) info.append("public ");
else if (Modifier.isPrivate(modifiers)) info.append("private ");
else if (Modifier.isProtected(modifiers)) info.append("protected ");
if (Modifier.isStatic(modifiers)) info.append("static ");
if (Modifier.isFinal(modifiers)) info.append("final ");
else if (Modifier.isAbstract(modifiers)) info.append("abstract ");
info.append(method.getReturnType().getName());
info.append(' ');
info.append(method.getName());
info.append('(');
Class>[] parameterTypes = method.getParameterTypes();
for (int i = 0 ; i < parameterTypes.length ; i++) {
info.append(parameterTypes[i].getName());
if (i != parameterTypes.length - 1) info.append(',');
}
info.append(')');
info.append(';');
System.out.println(info);
}
break;
case FIELDS:
Field[] fields = FieldOperation.getAllField(clz);
for (Field field : fields) {
StringBuilder info = new StringBuilder();
final int modifiers = field.getModifiers();
if (Modifier.isPublic(modifiers)) info.append("public ");
else if (Modifier.isPrivate(modifiers)) info.append("private ");
else if (Modifier.isProtected(modifiers)) info.append("protected ");
if (Modifier.isStatic(modifiers)) info.append("static ");
if (Modifier.isFinal(modifiers)) info.append("final ");
else if (Modifier.isVolatile(modifiers)) info.append("volatile ");
info.append(field.getType());
info.append(' ');
info.append(field.getName());
info.append(';');
System.out.println(info);
}
break;
case CLASS: {
StringBuffer info = new StringBuffer();
final int modifers = clz.getModifiers();
if (Modifier.isPublic(modifers)) info.append("public ");
else if (Modifier.isPrivate(modifers)) info.append("private ");
else if (Modifier.isProtected(modifers)) info.append("protected ");
if (Modifier.isStatic(modifers)) info.append("static ");
if (Modifier.isFinal(modifers)) info.append("final ");
else if (Modifier.isAbstract(modifers)) info.append("abstract ");
if (clz.isInterface()) info.append("interface ");
else info.append("class ");
info.append(clz.getName());
info.append(';');
System.out.println(info);
break;
}
default:
break;
}
}
/**
* set next task
* @param nextTask next task
*/
public void setNextTask(Task nextTask) {
this.nextTask = nextTask;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy