是否有比这更有效的方式(最好是 O(1) 而不是 O(n),但至少输入速度更快)来对 vector 的元素进行类型转换?
public Vector<String> typecastVector(Vector<Object> objects){
Vector<String> strings = new Vector<String>();
for(Object o : objects)
strings.add((String) o);
return strings;
}
注意事项
对于遇到明显需要对 Vector
或其他通用类进行类型转换的任何人:正如公认的回答者指出的那样,这可能是一个 code smell。你可能需要 refactor类层次结构中的代码。
具体,如果您还没有这样做,您应该考虑让使用上述 Vector
的类或其他通用类使用 Generics他们自己。当我在自己的代码中执行此操作时,我完全消除了代码中与上述函数类似的函数的需要。
如果您从未在自己的代码中实现泛型,请查看上面的“泛型”链接。您可能会(和我一样)惊讶地发现它们可以用来精确地实现您认为您需要从 Vector
类型转换中获得的功能。
最佳答案
如果您唯一想做的就是从 Vector
显然,这是行不通的:
Vector<Object> objectVector = new Vector<Object>();
Vector<String> stringVector = (Vector<String>)objectVector;
但是你可以这样做:
Vector<Object> objectVector = new Vector<Object>();
Vector typelessVector = objectVector;
Vector<String> stringVector = (Vector<String>)typelessVector;
您会收到一些警告,但代码应该可以正常工作。
如前所述,这确实感觉像是一种代码味道。
关于java - 在 Java 中有效地类型转换 vector 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405760/