首页>代码>java自动化测试工具[原]>/java_fanshe/src/com/wgtgt/fanshe/FanShe.java
package com.wgtgt.fanshe;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;

public class FanShe {
public static final String ONE_EMPTY="\t";
public static final String TWO_EMPTY="\t\t";
	/**
	 * @param args 程序入口,
	 */
	public static void main(String[] args) {
//		find("com.wgtgt.fanshe.FanShe");
		find("com.wgtgt.bean.Book");
	}
	public static void find(String className){
		StringBuilder begin=new StringBuilder();
		begin.append("package test;");
		begin.append("\n");
		begin.append("public class ");
		begin.append("Test");
		begin.append("{");
		begin.append("\n");
		begin.append("	public static void main(String[] args){");
		//begin.append("\n");
		System.out.println(begin);
		Class clazz = null;
		try {
			clazz = Class.forName(className);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Method[]methods=clazz.getMethods();
		for (Method method : methods) {
//			System.out.println(method.getName());
//			System.out.println(method.getDeclaringClass());
//			System.out.println(method.getGenericExceptionTypes());
////			Type[]types=method.getGenericParameterTypes();
////			for (Type type : types) {
////				System.out.println("type="+type);
////			}
//			System.out.println(method.getGenericReturnType());
//			System.out.println(method.getModifiers());
//			System.out.println(method.toGenericString());
			//break;
			System.out.println(TWO_EMPTY+"//==================");
//			String className2=method.getDeclaringClass().getSimpleName();
			String className3=className.substring(className.lastIndexOf(".")+1);

			String methodName=method.getName();
			String str=null;
			String resultYuanShi=method.getReturnType().getName();
			String result=null;
			String returnName=format(method.getName());
			String sum=null;
			String printStr=null;
			boolean isVoid=false;
			if("void".equals(resultYuanShi)){
				result="";
				isVoid=true;
			}else{
				result=cast2(resultYuanShi)+" "+returnName+"=";
				printStr=TWO_EMPTY+"System.out.println(\""+returnName+"=\"+"+returnName+");";
			}
			if(isStaticMethod(method)){
				str=className3+"."+methodName+"("+paramList(method)+");";
			}else{
				str=getFirstLittle(className3)+"."+methodName+"("+paramList(method)+");";
			}
			if(isVoid){
				sum=TWO_EMPTY+result+str;
			}else{
				sum=TWO_EMPTY+result+str+"\n"+printStr;
			}
			System.out.println(sum);
		}
		String end="\t}\n}";
		System.out.println(end);
	}
	private static String format(String name) {
		if(name.startsWith("get")){
			return getFirstLittle(name.substring(3));
		}
		return name;
	}
	private static String paramList(Method method) {
		StringBuilder sb=new StringBuilder();
		Type[]types=method.getGenericParameterTypes();
		for (Type type : types) {
			sb.append(cast(type));
			sb.append(",");
		}
		if(types.length>0){
			sb.deleteCharAt(sb.length()-1);
		}
		return sb.toString();
	}
	private static String cast(Type type) {
		String typeName=type.toString();
		if("int".equals(typeName)){
			return "123";
		}else if("long".equals(typeName)){
			return "123";
		}else if("byte".equals(typeName)){
			return "123";
		}else if("double".equals(typeName)){
			return "123.25";
		}else if("boolean".equals(typeName)){
			return "false";
		}else if("char".equals(typeName)){
			return "'a'";
		}else if("short".equals(typeName)){
			return "123";
		}else if("float".equals(typeName)){
			return "123.25";

		}else if("class java.lang.String".equals(typeName)){
			return "\"abc\"";
		}else if("class [Ljava.lang.String;".equals(typeName)){
			return "new String[]{\"abc\",\"eee\"}";
		}else if("class java.util.Date".equals(typeName)){
			return "new java.util.Date();";
		}else if("interface java.util.List".equals(typeName)){
			return "list";
		}else if("class java.util.ArrayList".equals(typeName)){
			return "list";
		}else if("interface java.util.Map".equals(typeName)){
			return "map";
		}else if("class java.util.HashMap".equals(typeName)){
			return "map";
		}else if("".equals(typeName)){
			return "";
		}else if("class java.lang.Object".equals(typeName)){
			return "\"abc\"";
		}else{
			return "null";
			//System.err.print(typeName);
		}
		//return null;
	}
	private static String cast2(String typeName) {
		//String typeName=type.toString();
		if("void".equals(typeName)){
			return "";
		}else if("int".equals(typeName)){
			return "int";
		}else if("long".equals(typeName)){
			return "long";
		}else if("byte".equals(typeName)){
			return "byte";
		}else if("double".equals(typeName)){
			return "double";
		}else if("boolean".equals(typeName)){
			return "boolean";
		}else if("char".equals(typeName)){
			return "char";
		}else if("short".equals(typeName)){
			return "short";
		}else if("float".equals(typeName)){
			return "float";

		}else if("java.lang.String".equals(typeName)){
			return "String";
		}else if("[Ljava.lang.String;".equals(typeName)){
			return "String[]";
		}else if("class java.util.Date".equals(typeName)){
			return "java.util.Date";
		}else if("interface java.util.List".equals(typeName)){
			return "list";
		}else if("class java.util.ArrayList".equals(typeName)){
			return "ArrayList";
		}else if("interface java.util.Map".equals(typeName)){
			return "map";
		}else if("class java.util.HashMap".equals(typeName)){
			return "HashMap";
		}else if("".equals(typeName)){
			return "";
		}else if("java.lang.Object".equals(typeName)){
			return "Object";
		}else{
			return "Object";
			//System.err.print(typeName);
		}
		//return null;
	}
	private static boolean isStaticMethod(Method method) {
		return Modifier.isStatic(method.getModifiers());
	}

	private static String getFirstLittle(String str) {
		return str.substring(0,1).toLowerCase()+str.substring(1);
	}

}
最近下载更多
12522425  LV13 2022年6月20日
Tricy1989  LV1 2020年9月8日
13527747590  LV1 2020年1月26日
hwqhwq  LV20 2019年6月19日
826207422  LV1 2019年4月11日
kenpfang  LV18 2018年3月15日
chenfeng1  LV13 2018年1月11日
jo12fjhh14  LV4 2017年11月28日
猪猪猪猪123  LV2 2017年11月14日
aihui523  LV34 2017年8月4日
最近浏览更多
FFF112233  LV8 3月27日
xp95323  LV14 2023年11月27日
xiaoyumao  LV2 2023年10月13日
yangxb2  LV10 2022年10月27日
zw050256  LV7 2022年9月30日
chen491733492  LV6 2022年8月29日
maoye520  LV1 2022年7月14日
王泽军  LV2 2022年6月24日
wwkddjjj  LV8 2022年5月27日
13165798872  LV11 2022年5月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友