黑马程序员--反射--利用反射获取方法名和字段名
来源:互联网 发布:ubuntu 本地源 编辑:程序博客网 时间:2024/06/08 02:10
* 需求:
* 任意给出一个类名称,打印出类中的构造方法,成员方法,成员变量类型
*
*解决方案:
*由java的反射机制: 将一个java类的各种成分映射成java类
*如果获取了类中的方法,字段对象,就可以实现需求了.
*
*关键词: 反射 Class
源码如下:
package zhangweicong.example.heima.reflex;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;/** * 需求: * 任意给出一个类名称,打印出类中的构造方法,成员方法,成员变量类型 * *解决方案: *由java的反射机制: 将一个java类的各种成分映射成java类 *如果获取了类中的方法,字段对象,就可以实现需求了. * *关键词: 反射 Class */public class ReflexTest {private Class clazz;public static void main(String[] args) {String className="java.util.ArrayList";ReflexTest reflex=new ReflexTest(className);Class clazz = reflex.getClass();System.out.println(className);reflex.printFields();reflex.printConstructionMethod();reflex.printMethods();}public Class getClazz() {return clazz;}public void setClazz(Class clazz) {this.clazz = clazz;}/** * * @param className */public ReflexTest(String className){try {clazz=Class.forName(className);} catch (ClassNotFoundException e) {e.printStackTrace();}}/** * 打印类的构造方法名,和形参类型 */public void printConstructionMethod(){if(clazz==null) return ;Constructor[] constructors = clazz.getConstructors();print("-----Constructors Start-----");for( Constructor constructor : constructors){StringBuilder stb=new StringBuilder();stb.append(constructor.getName());stb.append("(");Class[] parameterTypes = constructor.getParameterTypes();for( Class c : parameterTypes){stb.append(c.getName()+",");}if(parameterTypes!=null&¶meterTypes.length>0)stb.deleteCharAt( stb.length()-1);stb.append(")");print(stb.toString());}print("-----Constructors End-----");}/** * 打印类的方法名,和形参类型 */public void printMethods(){if(clazz==null) return ;Method[] methods = clazz.getMethods();print("-----Methods Start-----");for( Method method : methods){StringBuilder stb=new StringBuilder();stb.append(method.getName());stb.append("(");Class[] parameterTypes = method.getParameterTypes();for( Class c : parameterTypes){stb.append(c.getName()+",");}if(parameterTypes!=null&¶meterTypes.length>0)stb.deleteCharAt( stb.length()-1);stb.append(")");print(stb.toString());}print("-----Methods End-----");}public void printFields(){if(clazz==null)return ;Field[] fields = clazz.getFields();print("-----Fields Start-----");for(Field field : fields ){StringBuilder stb=new StringBuilder();stb.append(field.getType().getName()+" "+field.getName());print(stb.toString());}print("-----Fields End-----");}public void print(String args){System.out.println(args);}}
0 0
- 黑马程序员--反射--利用反射获取方法名和字段名
- java反射通过字段名获取set、get方法
- iOS反射机制,获取方法名和描述属性
- 反射获取类名
- 类名反射&&方法反射
- java反射动态获取字段名并设置字段值
- 通过java反射获取对象的字段名和字段值
- 反射获取属性名和属性值
- C# 反射出类中字段名
- java反射机制,通过类名获取对象,通过方法名和参数调
- java反射机制,通过类名获取对象,通过方法名和参数调
- java反射机制,通过类名获取对象,通过方法名和参数调
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- java反射机制,通过类名获取对象,通过方法名和参数调
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- 反射获取方法名及参数名,反射获取参数作为对象使用
- 用反射获取接口名
- UIView的alpha、hidden和opaque属性之间的关系和区别(转载)
- C/C++内存分配管理
- Java帮助文档资源整理
- Android开发——去除actionbar左上角的图标,只显示标题
- 字符串截取方法java
- 黑马程序员--反射--利用反射获取方法名和字段名
- 在Solaris上使用LD_OPTIONS环境变量诊断编译链接问题
- gvim winmanager插件
- Lua里的"switch-case"语句
- 矢量运算辅助工具
- 在项目中结合使用 assign 和js_string
- 视频编解码学习之三:变换,量化与熵编码
- linux常用编辑器
- S3C2440的SPI解析