java - 在 Java 中有效地类型转换 vector 的元素

标签 java vector casting

是否有比这更有效的方式(最好是 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,那您可以做到。不过,您必须确保 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/