JAVA 中将字符串转换成类实例对象

在很多时候我们需要将一个给了完整路径的类对象字符串转换成一个类的实例对象,就比如说有以下这样的一个字符串
String  menAction= "gef.putin.step.ui.SystemMenuTest(xiajiaji)"在该类中需要有有一个字符串格式的参数,当然多个参数也可 以,我已经将多个参数的考虑进去,对改字符串进行解析就可以转换成类的实例对象了。以下是我做的一个小的Demo,如果能够帮助大家,我当然觉得很开心, 希望对大家有帮助。
import java.lang.reflect.Constructor;
public class Test {
 public static void main(String [] args){
  String menuAction = "gef.putin.step.ui.SystemMenuTest(xiajiaji)";
  boolean endsWith = menuAction.endsWith(")");//判断是否带参数
  SystemMenuTest action =null;
  if(!endsWith) {
        try{
             action = (SystemMenuTest) Class.forName(menuAction).newInstance();
        } catch(Exception ee) {
             ee.printStackTrace();
        }
  } else {
        String clazzName = menuAction.substring(0, menuAction.indexOf("("));
        String parAllStr =  menuAction.substring(menuAction.indexOf("(")+1, menuAction.indexOf(")"));//取参数名
        boolean contains = parAllStr.contains(",");
        String [] parStr = null;
        if(contains) {
             parStr = parAllStr.split(",");
        } else {
             parStr = new String[]{parAllStr};
        }
        try {
             Class clazz = Class.forName(clazzName);
             Class [] parClass = new Class[parStr.length];
             for(int i =0;i<parStr.length;i++) {
                  parClass [i] = String.class;
             }
             Constructor con=clazz.getConstructor(parClass);
             action = (SystemMenuTest) con.newInstance(parStr);
        } catch(Exception exe) {
             exe.printStackTrace();
        }
  }
  action.show();
 }
}
其中SystemMenuTest  代码如下:
public class SystemMenuTest{
     private String name;
      public SystemMenuTest(String name){
         this.name = name;
    }
   public void show(){
    System.out.println("要转换类中的参数是:"+name);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值