You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
5.3 KiB
127 lines
5.3 KiB
package com.ynxbd.common.helper.common;
|
|
//
|
|
//import javassist.ClassPool;
|
|
//import javassist.CtClass;
|
|
//import javassist.CtMethod;
|
|
//import javassist.Modifier;
|
|
//import javassist.bytecode.CodeAttribute;
|
|
//import javassist.bytecode.LocalVariableAttribute;
|
|
//import javassist.bytecode.MethodInfo;
|
|
//import weixin.popular.bean.user.User;
|
|
//
|
|
//public class MethodUtil {
|
|
//
|
|
// public String test() {
|
|
// return "hello";
|
|
// }
|
|
//
|
|
// public static void test2(String a, String b, User user) {
|
|
// System.out.println(a);
|
|
// System.out.println(b);
|
|
// }
|
|
//
|
|
// public static void test03(String name, Object... args) {
|
|
// System.out.println(name);
|
|
// for (Object o : args) {
|
|
// System.out.println(o);
|
|
// }
|
|
// }
|
|
//
|
|
// public static void main(String[] args) {
|
|
//// ArrayList<Object> objects = new ArrayList<>();
|
|
////// objects.add("123");
|
|
////// objects.add(true);
|
|
//// test03("123", objects);
|
|
// String[] names = getMethodParams("", "getData");
|
|
// System.out.println(names);
|
|
// if (names == null) return;
|
|
//// System.out.println(names);
|
|
// for (String name : names) {
|
|
// System.out.println(name);
|
|
// }
|
|
// }
|
|
//
|
|
//
|
|
// /**
|
|
// * 根据类名和方法名,获取方法的参数名
|
|
// *
|
|
// * @param clazzName 类名
|
|
// * @param methodName 方法名
|
|
// * @return 参数名数组
|
|
// */
|
|
// public static String[] getMethodParams(String clazzName, String methodName) {
|
|
// try {
|
|
// ClassPool pool = ClassPool.getDefault();
|
|
// CtClass cc = pool.get(clazzName);
|
|
// CtMethod cm = cc.getDeclaredMethod(methodName);
|
|
// MethodInfo methodInfo = cm.getMethodInfo();
|
|
// CodeAttribute codeAttribute = methodInfo.getCodeAttribute();
|
|
// String[] params = new String[cm.getParameterTypes().length];
|
|
// LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag);
|
|
// if (attr != null) {
|
|
// int pos = Modifier.isStatic(cm.getModifiers()) ? 0 : 1;
|
|
// for (int i = 0; i < params.length; i++) {
|
|
// params[i] = attr.variableName(i + pos);
|
|
// }
|
|
// return params;
|
|
// }
|
|
// } catch (Exception e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
// return null;
|
|
//
|
|
// }
|
|
|
|
|
|
//初始化
|
|
// private void getVar() throws IntrospectionException, IllegalAccessException, InstantiationException, CannotCompileException {
|
|
// Class<? extends BaseServlet> clazz = this.getClass();
|
|
// ClassPool pool = ClassPool.getDefault();
|
|
// CtClass ctClass = pool.makeClass(StringUtils.capitalize(clazz.getName()));
|
|
// map = new HashMap<>();
|
|
// Field[] fields = clazz.getDeclaredFields();
|
|
// for (Field f : fields) {
|
|
// if (f.isAnnotationPresent(RequestParam.class)) {
|
|
// RequestParam requestParam = f.getAnnotation(RequestParam.class);
|
|
// // 注解值c
|
|
// Class<?> type = f.getType();
|
|
//// System.out.println(f.getType());
|
|
//// System.out.println(f.getGenericType());
|
|
//// Object o = type.newInstance();
|
|
//// Class<? extends Type> aClass = f.getGenericType().getClass();
|
|
// System.out.println("++++++++++++++++++++");
|
|
// String annotationVal = requestParam.value();
|
|
// System.out.println(annotationVal);
|
|
// // 属性名
|
|
// CtField make = CtField.make(String.format(fieldTemplate, f.getType().getName(), f.getName()), ctClass);
|
|
//
|
|
// String setMethodName = SETTER_STR + StringUtils.capitalize(f.getName());
|
|
// String getMethodName = GETTER_STR + StringUtils.capitalize(f.getName());
|
|
//
|
|
// CtMethod setter = CtNewMethod.setter(setMethodName, make);
|
|
// ctClass.addMethod(setter);
|
|
// CtMethod getter = CtNewMethod.getter(getMethodName, make);
|
|
// ctClass.addMethod(getter);
|
|
//
|
|
// System.out.println(setter.toString());
|
|
// System.out.println(getter.toString());
|
|
// System.out.println("===============");
|
|
//
|
|
// String fieldName = f.getName();
|
|
//
|
|
//// PropertyDescriptor descriptor = new PropertyDescriptor(fieldName, clazz); //给一个属性,获取值
|
|
//// Method getMethod = descriptor.getReadMethod(); //相当于为上面声明的字段设置get方法
|
|
//// Method setMethod = descriptor.getWriteMethod(); //为上面声明的字段设置set方法(又称内省)
|
|
//// getMethod.setAccessible(true);
|
|
//// setMethod.setAccessible(true);
|
|
//// System.out.println(setMethod.toString());
|
|
//// System.out.println(getMethod.toString());
|
|
// if (annotationVal.equals("")) {
|
|
// map.put(annotationVal, new BaseRequest(annotationVal, fieldName, setter, getter));
|
|
// } else {
|
|
// map.put(fieldName, new BaseRequest(fieldName, fieldName, setter, getter));
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
|