gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:08:02 26 4
gpt4 key购买 nike

自从

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));
}

返回一个字符串,例如,如果您愿意,请像这样调用该方法:

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;
}

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

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

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

其他很容易使用 Class c = Class.forName(className);等等..

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

最佳答案

查看此this使用 RegEx 从外部字符串(通过方括号)提取数组主体的问题,然后您可以简单地使用 String.split(",") 将数组主体拆分为数组项。

关于java - 如何将看起来像数组的字符串转换为实际的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com