Error: can only iterate over an array or an instance of java.lang.Iterable

后端 未结 2 615
醉酒成梦
醉酒成梦 2021-02-06 10:22

please help me with my error can\'t seem to make it work because of that can only iterate over an array or an instance of java.lang.Iterable. i want to create a barcode and read

2条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-06 11:01

    Error: can only iterate over an array or an instance of java.lang.Iterable

    It clearly says that you should iterate only on objects which are iterable.

    In your code you are using

    NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true, false);
    ...    
    for(Shape shape: shapes)
    

    The for loop fails unless the shapes base class is an instance of a java.util.Collection or java.lang.Iterable.

    Check if NodeCollection is a collection type class that implemented java.lang.Iterable.


    Edit:

    the nodeCollection is from the com.aspose.words.

    NodeCollection implements generic Iterable directly, without specifying the type of objects it would be handling. Hence you should explicitly generate the Iterator from the NodeCollection instance and on that you can iterate.

    NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true, false);
    Iterator shapesIterator = shapes.iterator();
    ...    
    // now use the above iterator in for loop, as below
    for( Shape shape: shapesIterator )
    

    Refer to a similar answer on so

提交回复
热议问题