java中的反射机制中invoke典型用法
java中的反射机制通过invoke方法来实现,这中间主要是是通过一下几个函数实现的
Class.forName ("类名")
Class.forName ("类名").newInstance
Class.getMethod ("调用的方法名",class[]{参数类列表})
instance.getClass
Method.invoke ("对象名","参数封装成的对象")
具体怎么实现,让我们来看一个简单的例子:
Class InvokeTest{
private static String algorithm = "Algorithm";
Object invokeMethod(object instance,String fun, Class[] paras, Object[] paraValue){
Object result = null;
Method method;
try{
method = instance.getClass.getMethod(fun, paras);
result = method.invoke(instance, paraValue);
}catch(Exception e) {
e.printStackTrace();
result = null;
}
}
public static void main(){
int x= 10,y=20;
invokeMethod(Class.forName(algorithm),newInstance,"add", Class[] {Class.int,Class.int},
Object[] { new Integer(x), new Integer(y)})
}
}
Class Algorithm{
public int add(int a,int b){
return a+b;
}
}
上面代码简洁地说明了invoke的使用,至于原理,这部分并不累述。
相关文档:
在csdn上看到这样一个题目:
public class Test
{
public static void main(String[] args)
{
int a = 5;
System.out.println("ddsadasa" + (a > 5 ? 9.0 : 9));
}
}
运行结果是( )
A ddsadasa9 B ddsadasa9.0 C 编译出错 & ......
前一段做个程序,遇到了这样一个问题,想利用相对路径删掉一个文件(实际存在的),老是删不掉. 真是急人呀,最后让我费了好大力气才算把它解决掉,问题不防跟大家说说,万一遇到这样的问题,就不用再费劲了!
情况是这样的:我的Tomcat装在了c盘,而我的虚拟目录设在了E ......
任何项目开发中,在一个集合或数组中循环查找,搜索目标数据,是经常用到的。如果搜索的数据范围比较小,那么不管什么算法,对于今天的计算机来说,性能上基本差别不大,但是如果数据量达到几百万,甚至更大,那么算法的选择和优化就显得比较重要。有空之余测试了下顺序搜索和二分搜索的性能,竟然发现效率差异在1500倍左右 ......
-------------------------------------------------
本教程由yyc,spirit整理
------------------------------------------------- 第6章 类再生
“Java引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情。”
在象C那样的 ......