一个有难度的Java笔试题

这是我遇到的一个比较有难度的java笔试题,当时我只做出了大概,而且多处错漏,惭愧惭愧。

以下代码应该是正确的,已经测试通过:

 

import java.lang.reflect.Method;
public class ReflectTest {
 
 
 /**
  * 有难度的Java笔试题  已知类名、方法名,调用参数为 String数组,要求用反射机制写出调用过程代码
  */
 
 public static Object doCall(String className,String methodName,String[] paras)throws Exception{
  Object result = null;
  //获得反射类对象:
  Object obj = Class.forName(className).newInstance();
  //获得方法列表:
  Method[] methods = obj.getClass().getDeclaredMethods();
  for(Method m:methods){
   //判断方法名:
   if(m.getName().equals(methodName)){
    Class[] classArr = m.getParameterTypes();
    boolean flag = false;
    for(Class c:classArr){
     //判断参数类型:
     if(c.equals(paras.getClass())){
      flag=true;
     }
    }
    if(flag){
     result = m.invoke(obj, new Object[]{paras});
    }
   }
  }
  return result;
  
 }
 
 public static void main(String[] args) throws Exception {
  Object s = doCall("ReflectClass2","test01",new String[]{"para001","para002"});
  System.out.println(s);
 }

}


class ReflectClass2 {
 
 public String test01(String[] abc){
  for(String s:abc){
   System.out.println(s);
  }
  
  return "return code";
 }

}

你可能感兴趣的:(一个有难度的Java笔试题)