一个有难度的Java笔试题

本文提供了一个使用Java反射机制调用特定类方法的示例代码。该示例展示了如何根据类名和方法名,传递String数组作为参数来动态调用方法。

这是我遇到的一个比较有难度的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";
 }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值