hardcore java 学习5 反射
来源:互联网 发布:c专家编程pdf高清 编辑:程序博客网 时间:2024/05/16 20:27
反射有很强大的能力。可以对一个未知的类调用其中的方法。就好象是从镜子里看人,而不是直观的进行。
现在很多优秀的框架、语言都借助反射的力量。
对未知类的方法调用:
/* * file: MethodInfoDemo.java * package: oreilly.hcj.reflection * * This software is granted under the terms of the Common Public License, * CPL, which may be found at the following URL: * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm * * Copyright(c) 2003-2005 by the authors indicated in the @author tags. * All Rights are Reserved by the various authors. *########## DO NOT EDIT ABOVE THIS LINE ########## */package oreilly.hcj.reflection;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import oreilly.hcj.bankdata.Gender;import oreilly.hcj.bankdata.Person;/** * Demonstrates how to get simple method information. * * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a> * @version $Revision: 1.3 $ */public class MethodInfoDemo {/** * __UNDOCUMENTED__ * * @param obj __UNDOCUMENTED__ * * @throws IllegalAccessException __UNDOCUMENTED__ * @throws InvocationTargetException __UNDOCUMENTED__ */public static void emptyStrings(final Object obj) throws IllegalAccessException, InvocationTargetException {final String PREFIX = "set"; //$NON-NLS-1$Method[] methods = obj.getClass() .getMethods();for (int idx = 0; idx < methods.length; idx++) {if (methods[idx].getName() .startsWith(PREFIX)) {if (methods[idx].getParameterTypes()[0] == String.class) {methods[idx].invoke(obj, new Object[] { new String() });}}}}/** * Demo method. * * @param args Command line arguments. */public static void main(final String[] args) {Person p = new Person();p.setFirstName("Robert");p.setLastName("Simmons");p.setGender(Gender.MALE);p.setTaxID("123abc456");printMethodInfo(p);try {System.out.println("==> " + p.getFirstName());emptyStrings(p);System.out.println("==> " + p.getFirstName());} catch (final Exception ex) {ex.printStackTrace();}}/** * __UNDOCUMENTED__ * * @param obj __UNDOCUMENTED__ */public static void printMethodInfo(final Object obj) {Class type = obj.getClass();final Method[] methods = type.getMethods();for (int idx = 0; idx < methods.length; idx++) {System.out.println(methods[idx]);}}}/* ########## End of File ########## */
- hardcore java 学习5 反射
- hardcore java 学习笔记1
- Hardcore Java
- hardcore java 学习笔记2——java in review
- 《HardCore Java》读书笔记系列--之一
- Hardcore Java 4 —— Immutable
- 《HardCore Java》读书笔记系列--之二
- 《HardCore Java》读书笔记系列--之三
- java 反射机制-学习笔记(5)
- java学习-反射
- Java反射学习
- Java反射学习
- java反射机制学习
- Java反射学习
- Java反射学习
- JAVA反射机制学习
- Java 反射 视频学习
- java反射的学习
- git rebase 经验
- ubuntu 软件包管理
- 关于使用Androguard解析dex文件的问题[]
- [置顶]不再迷惘,执着于我的方向
- oracle 导出EXP-00003: 未找到段 (5,38467) 的存储定义的解决方法
- hardcore java 学习5 反射
- Intent type
- c# WebClient 下载远程图片--超简单
- HTTP协议详解
- 配置Groovy开发运行环境
- element.style覆盖了我的样式!!
- 我的2011之菜鸟的生活
- 如何练就需求分析的火眼金晴?
- 动画效果编程基础