Chr*_*ord 4 java casting vector
是否有一种更有效的方法(最好是O(1)而不是O(n),但至少要更快地输入)来对类型的矢量进行类型转换?
public Vector<String> typecastVector(Vector<Object> objects){
Vector<String> strings = new Vector<String>();
for(Object o : objects)
strings.add((String) o);
return strings;
}
Run Code Online (Sandbox Code Playgroud)
对于那些明显需要对Vector类或其他Generic类进行类型转换的人:正如接受的回答者所指出的那样,这可能是代码味道,您可能需要重构类层次结构中的代码.
具体来说,如果您还没有,则应考虑使用所述Vector或其他Generic类的类本身使用泛型.当我在自己的代码中执行此操作时,我完全消除了代码中与上述函数类似的函数需求.
如果您从未在自己的代码中实现泛型,请查看上面的"泛型"链接.您可能会惊讶地发现它们可以用于从Vector类型转换中精确实现您认为需要的功能.
如果您要做的唯一事情是从Vector <Object>转换为Vector <String>,那么您可以这样做.你必须确保矢量中的每个对象都是一个字符串!
显然,这不起作用:
Vector<Object> objectVector = new Vector<Object>();
Vector<String> stringVector = (Vector<String>)objectVector;
Run Code Online (Sandbox Code Playgroud)
但你可以这样做:
Vector<Object> objectVector = new Vector<Object>();
Vector typelessVector = objectVector;
Vector<String> stringVector = (Vector<String>)typelessVector;
Run Code Online (Sandbox Code Playgroud)
你会得到一些警告,但代码应该可以正常工作.
如前所述,这确实感觉像代码味道.