Так как
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;
}
Редактировать: Спасибо за внимание!Так как некоторые из вас спрашивают, чего я пытаюсь достичь, вот немного больше объяснений:
Я хочу реализовать простой протокол запроса / ответа, который позволяет удаленный вызов метода (и я не хочу использовать JavaRMI ...) Поэтому я слушаю запросы, структуру которых можно увидеть в примере requestMethodExecution
.
Там у меня есть вся необходимая информация для вызова метода в моем классе, поэтому для вызова нужного мне методаэто аргументы (и их значение), и я не знаю, как получить к ним доступ из заданной строки.
Остальные легко получить с помощью Class c = Class.forName (className);и т.д ..
Редактировать # 2: Мой вопрос не о простом регулярном выражении, так зачем его закрывать?В заголовке уже указана другая тема, здесь я становлюсь немного соленым ...