简体   繁体   中英

The method *****is undefined for the type***** in Java

I'm trying to call a method from an abstract class Sprite in another package, but I got "The method getSymbol() is undefined for the type Sprite"

Here's the code.

And here is the code from another package sprites

I guess the problem is that the method from an abstract class cannot be instantiated.

But I don't know how to fix it.

This is the problem:

public class ArrayGrid<Sprite> implements Grid<Sprite>

The way you've declared the class, Sprite is the name of a type parameter. You've made this a generic class, and I suspect you didn't mean to. Within that class, Sprite refers to the type parameter, not the type - so you could have an ArrayGrid<String> which implemented Grid<String> ... at which point you'd have a string array rather than a sprite array, so it's no wonder that getSymbol() wouldn't work, just as one symptom of the problem.

I suspect you just wanted:

public class ArrayGrid implements Grid<Sprite>

At that point, Sprite really refers to the type. And that means you can avoid the code that wouldn't work around arrays, and instead just write:

this.grid = new Sprite[numRows][numColumns];

Then there's no need to suppress the warnings :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM