java:Inside Enhanced for循环不能Object to String

Paw*_*wan 1 java

我从网上拿了这个例子.但是,当我尝试它不是编译说不能将对象转换为字符串

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {
        ArrayList names = new ArrayList();

        names.add("Amy");
        names.add("Bob");
        names.add("Chris");
        names.add("Deb");
        names.add("Elaine");
        names.add("Frank");
        names.add("Gail");
        names.add("Hal");

        for (String nm : names)
            System.out.println((String)nm);

    }
}
Run Code Online (Sandbox Code Playgroud)

如果它是循环的正常,我可以完成list.get(元素索引).toString().但是如何在增强的循环中做到?

Jon*_*eet 6

您不应该通过调用绕过类型安全toString()- 您应该使用泛型开头:

List<String> names = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

现在您的for循环将编译(您可以摆脱System.out.println调用btw 中的强制转换),编译器将阻止您向列表中添加非字符串.

有关泛型的起点,请参阅Java泛型教程 ; 有关您希望了解的更多信息,请参阅Java泛型常见问题解答 :)