如何将看起来像数组的字符串转换为实际的对象数组?



public static String requestMethodExecution(String objectName, String className, String methodName, Object...
params) {
return String.format("%s,%s,%s,%s", objectName, className, methodName, Arrays.toString(params));
}

返回一个 String,例如,如果要调用该方法,如下所示:

requestMethodExecution("foo","bar","fooBar",2.0,3.0,"Hello");

你会得到一个这样的字符串:foo,bar,fooBar,[2.0,3.0,Hello]

我很想遍历该数组,但我不能,因为它是一个字符串。

这背后的原因是这种方法:(我刚开始反思,所以我不知道还能怎么做(

public static Class[] getParameterType(String ...params) throws ClassNotFoundException {
Class[] paramTypes = new Class[params.length];
for(int i=0; i<params.length;i++){
Class paramClass = Class.forName(params[i]);
if (paramClass == Double.class) {
paramTypes[i] = (double.class);
} else if (paramClass == Integer.class) {
paramTypes[i] = (int.class);
} else {
paramTypes[i] = paramClass;
}
}
return paramTypes;
}

到目前为止,我只想出了一个非常肮脏的方法:

public static String[] getParams(String message){
int indexOfParamStart = message.indexOf("[");
int indexOfParamEnd = message.indexOf("]")+1;
String[] splitMessage = message.substring(indexOfParamStart, indexOfParamEnd).replaceAll("\[", "")
.replaceAll("]", "").replaceAll(" ","").split(",");
return splitMessage;
}

编辑:感谢您对此进行调查!既然你们中的一些人在问我想要实现什么,这里有更多的解释:

我想实现一个简单的请求/回复协议,它允许远程方法调用(我不想使用 java RMI...... 因此,我侦听其结构可以在requestMethodExecution示例中看到的请求。

在那里,我有所有相关信息来调用我的类的方法,所以要调用该方法,我需要它的参数(及其值(,我不知道如何从给定的字符串访问它们。

其他的很容易用类c = Class.forName(className(;等等。

编辑#2: 我的问题不是关于一个简单的正则表达式,那么为什么要关闭它呢?标题已经说明了一个不同的主题,我在这里变得有点咸......

请参阅此问题,了解如何使用 RegEx 从外部字符串(通过方括号(中提取数组主体,然后您可以简单地使用String.split(",")将数组主体拆分为数组项。

最新更新