我对 Java 很陌生(大约 10 天),所以我的代码可能很糟糕,但这就是我所拥有的:
ArgsDataHolder argsData = new ArgsDataHolder(); // a class that holds two
// ArrayList's where each element
// representing key/value args
Class thisArgClass;
String thisArgString;
Object thisArg;
for(int i=2; i< argsString.length; i++) {
thisToken = argsString[i];
thisArgClassString = getClassStringFromToken(thisToken).toLowerCase();
System.out.println("thisArgClassString: " + thisArgClassString);
thisArgClass = getClassFromClassString(thisArgClassString);
// find closing tag; concatenate middle
Integer j = new Integer(i+1);
thisArgString = getArgValue(argsString, j, "</" + thisArgClassString + ">");
thisArg = thisArgClass.newInstance();
thisArg = thisArgClass.valueOf(thisArgString);
argsData.append(thisArg, thisArgClass);
}
用户基本上必须以这种格式在命令提示符中输入一组键/值参数:<class>value</class>
例如<int>62</int>
。使用此示例,thisArgClass
将等于Integer.class
,thisArgString
将是读取“62”的字符串,并且thisArg
将是等于 62 的 Integer 实例。
我试过了thisArg.valueOf(thisArgString)
,但我猜valueOf(<String>)
只是Object的某些子类的一种方法。无论出于何种原因,我似乎无法将 thisArg 转换为 thisArgClass (就像这样:thisArg = (thisArgClass)thisArgClass.newInstance();
,此时valueOf(<String>)
应该可以访问。
必须有一种很好、干净的方式来做到这一点,但目前这超出了我的能力范围。如何获取加载到动态类型对象(Integer、Long、Float、Double、String、Character、Boolean 等)中的字符串的值?还是我只是想多了,Java 会为我做转换?:使困惑: