- 浏览: 92963 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jameswolf:
补肾啊!冬天多喝,但是补只是后招,别漏才是真理,呵呵
朋友告诉我的神粥秘方 -
wa327114652:
很想学习,但能再详细点吗?
for java beginner 5-2 - 自己实现枚举-下 -
superlittlefish:
不错,简单易懂.一直在看你的blog,感觉反射写的挺好的.让我 ...
for java beginner 15 下java反射在框架里的应用 读取properties文件
java 反射 Method类
str1.charAt()
str2.charAt()
这个方法charAt()其实是字节码的,不是某不实例对象的
-------------------
-----------------------[这里讲一个很有劲的事情]-----------------------
str1.charAt()
str2.charAt()
这个方法charAt()其实是字节码的,不是某不实例对象的
-------------------
package com.ncs; import java.lang.reflect.Method; public class ReflectTest { public static void main(String[] args) throws Exception { //测试用反射 得到 String的charAt()方法 String myStr = "hubin"; //第一个参数是 方法名字, 但是方法可以重载 所以还得给参数 //现在知道为什么 重载 和返回值无关,而和 参数 个数 和类型有关了吧 Method method = String.class.getMethod("charAt", int.class); //method是String类里的一个方法,方法名字叫charAt,需要一个参数 //然后method这个实例有一个方法invoke ,说把自己 调 一下吧,需要一个参数哦 System.out.println(method.invoke(myStr, 1)); //output u OK! //★如果method.invoke(null, 1) //那么这个方法就是静态方法 //如果是1.4 ,传数组 //new int[]{1,2,3}; //new String[] {new String("abc"),new String("xyz"),new String("123")}; //new Object[]{2} //这个数组有一个元素 给你自动包装了 变Object } }
-----------------------[这里讲一个很有劲的事情]-----------------------
package com.ncs; import java.lang.reflect.Method; public class RunOtherClassMainMethod { public static void main(String[] args) throws Exception { HasMainMethod.main(new String[]{}); //这什么都不打 HasMainMethod.main(new String[]{"hu","bin"}); //这打了hu //bin ///////////// //上面的不希奇,下面用反射 //为什么呢??神经病么?? /*----这里解释为什么用反射---------------- * 有这种情况,一个地方给你传了一个参数,是一个 类的名字 * 说,这个类里面有个main方法,执行它会有好东西出来, * 现在只知道这个类的名字,怎么去new呢?? * 当然一定要new也是可以的,但是写死了 * 现在第二个地方也给你传了个类名,说这个里也有个main方法很好玩 * 那你在new第二个,有几亿个地方给你传呢?一个个new ,不现实 * 我们要写个通吃的方法 * 现在我们知道了,所有进来的类都有 个main 方法, 参数是 String[] 数组 那么好了 * Method method = HasMainMethod.class.getMethod("main", String[].class); * * method就可以代表那一亿个方法了 * 但是invoke的时候会出现问题,这不是程序的问题,是 1.4 1.5 兼容的问题,非常麻烦等下细说 */ /* Method method = HasMainMethod.class.getMethod("main", String[].class); //现在method里有了方法了,怎么调,静态的,不需要传实例给它了 method.invoke(null, new String[]{"ma","xiao"}); */ //上面的代码 会出现 wrong number of arguments // 这是兼容的问题,不是 思想 上的问题 //★★★★★★★★★★ //上面的代码还有问题,HasMainMethod.class还是写死了,不可以这样写, //要用下面的代码 Method method = Class.forName("com.ncs.HasMainMethod").getMethod("main", String[].class); //这样就对了,"com.ncs.HasMainMethod"当然可以换成其他的 //比如 args[0],让你们传进来啊 //Class.forName(args[0]).getMethod("main", String[].class); //method.invoke(null, new String[]{"ma","xiao"}); //★这思想是对的,但是版本问题,不允许了 //现在对了,然后还报 wrong number of arguments,下面详细说明 //:: //现在说参数的个数不对 //我要的方法我已经说了,它需要一个参数,那个参数是一个数组 //如果按照1.5的语法,是没有问题的 //但是SUN必须要考虑到老版本, //老版本的语法,很多的时候拿到一个数组时,它会迈力的给你一个一个拆开 //而JVM又是按照老版本的方法执行的, //所以这里我传的new String[]{"ma","xiao"}被它拆成两个参数了 //所以如果我只传一个,new String[]{"ma"},还是拆,说argument type mismatch, //当然,需要的是数组,你给个字串当然 argument type mismatch //怎么办,你既然要拆,那我最多再给你包一层,让你去拆吧 method.invoke(null, new Object[]{new String[]{"ma","xiao"}}); //这样,JVM一拆,拆出的一个数组,正是我想要的效果 run OK! //还有一个方法 method.invoke(null, (Object)new String[]{"hello","world"}); //强制转成一个 Object 1.4不是看见数组参数就拆么?[数组的引用应该是不会拆的] //现在 JVM看不见数组了,不拆了,run OK! } }
发表评论
-
pull解析器通用解析XML与生成XML
2013-02-23 14:52 0pull解析器,简单易用,android都在用,肯定有他的优 ... -
java decompiler - a tool to view jar file
2012-02-15 22:26 961有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 687################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 732download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 723D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 822简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1025023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1544java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-2
2009-11-30 23:28 1148java 1.5 注解-2[非常重要 比每举重要] 刚刚只是 ... -
java 1.5 annotation-1
2009-11-30 21:07 1268java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 722019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 985018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 17 配置文件的知识
2009-11-29 19:29 750017 配置文件的知识 刚刚已经说到 配置文件,我说放 工程 ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1342java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1090java 反射 数组的反射 ArrayList HashSe ... -
for java beginner13java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
2009-11-29 12:35 887java 反射 数组的反射(上 ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 955java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3500java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1340java 反射 的概念 和 Constructor 类 反 ... -
for java beginner 8 java 反射的基础基础Class的理解
2009-11-29 07:09 968java 反射 的基础基础 Class的理解 反射 在 1 ...
相关推荐
introduce in english
Java A Beginner's Guide(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
Java Programming for the Absolute Beginner.pdf
Fully updated to cover Java Platform, Standard Edition 7 (Java SE 7), Java: A Beginner's Guide, Fifth Edition starts with the basics, such as how to compile and run a Java program, and then discusses...
So many books out there can teach you those skills in Java, C++, or C#. Many of them even claim that they can teach you in 24 hours! Don’t laugh! They probably can do that, but all of them take one ...
Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java Programming for the Absolute Beginner
Java For Absolute Beginner
java beginner guide,
Java A Beginner's Guide(6th) 英文epub 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner's Guide(6th) 英文mobi 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文epub 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文azw3 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
一本适用于java初学者的英文版教材,很全面的介绍了Java的初阶内容。
黑皮书 Learn Java 8 In a Week_ A Beginner's Guide to Java Programming,新手一个星期学好JAVA,推荐
Learn to design and create video games using the Java programming language and the LibGDX software library. Working through the examples in this book, you will create 12 game prototypes in a variety ...
Welcome to C# and the world of Windows, Internet and World-Wide-Web programming with Visual Studio and the .NET platform! This book is the second in our new .NET How to Program series, which presents ...
jQuery for Designers Beginner's Guide Second Edition 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或...
Algorithm-Machine-Learning-for-Beginner-by-Python3.zip,斯克莱恩、坦索流。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Java and Algorithmic Thinking for the Complete Beginner 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自...