CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 5 of 5

Thread: generic, stuck

  1. #1
    Join Date
    Apr 2006
    Posts
    82

    generic, stuck

    I have problem in the following code:

    It is a code to parse a tree node with any number of childs

    Code:
    // generate a collection to hold the children
    Collection<TreeNode<String>> children = new ArrayList<TreeNode<String>>();
     
    while (has more child){
    	children.add(parse the child...);
    }
     
    createNode(...);
    Now there is a problem, createNode takes an array if TreeNode<String> instead of collection.
    Now I am stuck between array and collection
    toArray returns Object[] which i cannot cast to TreeNode<String>[]
    I also cannot create a new TreeNode<String> array and copy the values into the array (ie: TreeNode<String>[] nodes = new TreeNode<String>[size]; does not work)

    What can I do here?

  2. #2
    Join Date
    Dec 2006
    Posts
    166

    Re: generic, stuck


  3. #3
    Join Date
    Apr 2006
    Posts
    82

    Re: generic, stuck

    thanks

    but I am still curious

    toArray returns Object[]
    is there any way to cast the array back to whatever type it should be?

  4. #4
    Join Date
    Feb 2008
    Posts
    2

    Re: generic, stuck

    Try...

    Code:
    TreeNode<String> [] foo = children.toArray(new TreeNode<String> [1]);
    From the API...

    Code:
     <T> T[] toArray(T[] a)
    
        Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. If the collection fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this collection.
    
        If this collection fits in the specified array with room to spare (i.e., the array has more elements than this collection), the element in the array immediately following the end of the collection is set to null. This is useful in determining the length of this collection only if the caller knows that this collection does not contain any null elements.)
    
        If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order.
    
        Like the toArray method, this method acts as bridge between array-based and collection-based APIs. Further, this method allows precise control over the runtime type of the output array, and may, under certain circumstances, be used to save allocation costs
    
        Suppose l is a List known to contain only strings. The following code can be used to dump the list into a newly allocated array of String:
    
             String[] x = (String[]) v.toArray(new String[0]);
         
    
        Note that toArray(new Object[0]) is identical in function to toArray().
    
        Parameters:
            a - the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. 
        Returns:
            an array containing the elements of this collection 
        Throws:
            ArrayStoreException - the runtime type of the specified array is not a supertype of the runtime type of every element in this collection. 
            NullPointerException - if the specified array is null.

  5. #5
    Join Date
    Apr 2006
    Posts
    82

    Re: generic, stuck

    thanks
    cant believe I missed that

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured