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 编译出错 & ......
今天看到一道题目,是这样的:(我在里面打印了一些语句,先注释掉了)
class Singleton {
private static Singleton obj= new Singleton();
public static int counter1;
public static int counter2 = 2;
private Singleton() {
counter1++;
counter2++;
// System.out.println("Singleton counter1:" ......
package io;
import java.io.*;
/**
* @author 高枕吴忧
* 利用缓冲区原理,BufferedInputStream,
* 实现的文件字节流读取功能示范
*
*/
public class BufferedInOutputStream {
public BufferedInOutputStream() {
ioTest2();
}
public void ioTest2() {
FileInputStream in = null ;
Buffered ......
任何项目开发中,在一个集合或数组中循环查找,搜索目标数据,是经常用到的。如果搜索的数据范围比较小,那么不管什么算法,对于今天的计算机来说,性能上基本差别不大,但是如果数据量达到几百万,甚至更大,那么算法的选择和优化就显得比较重要。有空之余测试了下顺序搜索和二分搜索的性能,竟然发现效率差异在1500倍左右 ......
在程中我们常取一些资源的绝对径,下面给出一个简单方便的工具类来帮助我们轻松的找到我想的资源。(适用于CS/BS应用)
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/** *//**
* @author <a href="mailto:maryang@live.cn" mce_hre ......