[反射初探]根据反射获取类中参数类型及参数名和参数值
2014-05-26 10:45
337 查看
public String getMyDeclaredMethods(T t) { Class<?> c = t.getClass(); Method m[] = c.getDeclaredMethods(); String text = ""; String n = c.getCanonicalName(); for (int i = 0; i < m.length; i++) { // Method.getModifiers()表示修饰符 比如public 返回的是int类型 对应表如下: // PUBLIC: 1 // PRIVATE: 2 // PROTECTED: 4 // STATIC: 8 // FINAL: 16 // SYNCHRONIZED: 32 // VOLATILE: 64 // TRANSIENT: 128 // NATIVE: 256 // INTERFACE: 512 // ABSTRACT: 1024 // STRICT: 2048 // Field.getModifiers()作用同上 text = text + m[i].getModifiers() + " " + m[i].getReturnType() + " " + m[i].getName() + "\n"; } // 也可以用getFields 不过这个方法只能返回修饰为public的参数 Field[] fields = t.getClass().getDeclaredFields();// 获取public private // protect声明的属性的数组 for (Field field : fields) { try { field.setAccessible(true);// 暴力反射; // field.getType()获取参数类型 ;field.getName()获取参数名 ;field.get(t)获取参数 text = text + field.getType() + " " + field.getName() + " " + field.get(t).toString() + "\n"; if (field.getType() == String.class)// 比较字节码用== { String oldValue; oldValue = (String) field.get(t); String newValue = oldValue.replace('b', 'a'); field.set(t, newValue);// 往该参数里输入参数 } else if (field.getName().equals("a")) { field.set(t, 2); } } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return text + n + "\n" + t.toString(); }
相关文章推荐
- Java反射,根据类名创建带参数的实例(获取参数类型,参数等)
- 反射_案例2_根据参数类型获取构造器
- Java反射,根据类名创建带参数的实例(获取参数类型,参数等)
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- 通过反射获取泛型参数类型
- JS根据参数名称获取URL中参数值
- C# 中反射获取某类的子类和根据类型名动态创建对象
- C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
- 黑马程序员——通过反射获取方法中泛型参数的指定类型
- 反射获取一个方法中的参数名(不是类型)
- 利用java反射获取泛型类的类型参数具体类对象
- 反射机制获取方法的参数类型和返回值类型
- java基础-反射 --通过反射 获取泛型实际类型参数
- JS根据key值获取URL中的参数值及把URL的参数转换成json对象
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- 反射获取方法参数及返回值类型
- 通过反射获取泛型的参数类型信息
- 一个简单的反射例子(通过类型或者类型参数获取类的名称)
- 【Java-Reflection】反射获取泛型参数类型
- JS根据key值获取URL中的参数值及把URL的参数转换成json对象