Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8195679
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T05:13:05+00:00 2026-06-07T05:13:05+00:00

I have a strange problem using Generics in Java. Generics are quite new to

  • 0

I have a strange problem using Generics in Java. Generics are quite new to me, but I think I understand the basics.

Please have a look at this piece of code:

private void drawQuadtreeBoxes_helper(QuadTree<?> node) {
    if (node == null)
        return;

    Vector3 min = node.bbox.min;
    Vector3 max = node.bbox.max;
    // Draw the boxes (...)

    if (node.hasChildren()) {
        Array<QuadTree<?>> children = node.getChildren(); // ERROR HERE
        for (QuadTree<?> child : children) {
            drawQuadtreeBoxes_helper(child);
        }
    }
}

Because the type of objects stored inside the quadtree-structure is not relevant for this method, I use a wildcard for the method signature, so that this method can be applied to all kinds of QuadTree’s.

The method getChildren() returns the four childs of the node, stored inside the collection-class called Array (implementation of Array). I am sure the return type of getChildren() is indeed Array<QuadTree<?>> (even Eclipse says so inside the tooltip), but I still get an error on this line, telling me:

cannot convert from Array<QuadTree<capture#6-of ?>> to Array<QuadTree<?>>

Here comes the fun part: When I ask Eclipse for suggestions how to solve this, this is one of the suggestions:

Change type of 'children' to 'Array<QuadTree<?>>'

But it already is of this type! It get’s better: When I click on this suggestion, Eclipse changes this line to:

Array<?> children = node.getChildren();

Of course, this destroys all the following code.

What the heck is going on here? Could someone enlighten me, please?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T05:13:07+00:00Added an answer on June 7, 2026 at 5:13 am

    The problem is the method doesn’t know it’s the same QuadTree<?> (the ? could refer to different types in the same call).

    The solution is to “type” the method, which locks in QuadTree<?> (and therefore ?) to be the same type throughout the method.

    private <T extends QuadTree<?>> void drawQuadtreeBoxes_helper(T node) {
        if (node == null)
            return;
    
        Vector3 min = node.bbox.min;
        Vector3 max = node.bbox.max;
        // Draw the boxes (...)
    
        if (node.hasChildren()) {
            Array<T> children = node.getChildren(); // ERROR HERE
            for (T child : children) {
                drawQuadtreeBoxes_helper(child);
            }
        }
    }
    

    ? still means “anything”, but it now the same “anything”.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've got this strange problem using py-amqp and the Flopsy module. I have written
I have a strange problem. I do this query in a node.js server using
i have a strange problem only in Chrome using an iframe but working in
I have this strange problem. I'm trying to write a simple Hello World java
I have an strange problem using two borders. I use them to display video
I have a very strange problem with using geometry shaders. I made a very
I have strange problem with receiving data from socket. On client im using air
I have a strange problem with lxml when using the deployed version of my
I have run into a strange problem on Android , using jQuery mobile and
I have a strange problem in Visual Studio 2010 (C#) using the Report Viewer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.