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

后端 未结 2 589
醉酒成梦
醉酒成梦 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

    I assume Nodecollection is a com.aspose.words.NodeCollection.

    If you want to use the foreach syntax you better do:

    Node[] shapesArray = shapes.toArray();
    for (Node node : shapesArray ){ ...
    
    0 讨论(0)
  • 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<Shape> 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<Shape> shapes = doc.getChildNodes(NodeType.SHAPE, true, false);
    Iterator<Shape> shapesIterator = shapes.iterator();
    ...    
    // now use the above iterator in for loop, as below
    for( Shape shape: shapesIterator )
    

    Refer to a similar answer on so

    0 讨论(0)
提交回复
热议问题