public class Test<T>{
public boolean isMember(T item) {
if(item instanceof Test)
{
return true;
}
return false;
}
}
Is this the correct way to check if the item is an instance of the class?
I went through some searches and it seems that for a generic class, this will not work.
It’s unclear what you’re trying to test here, but here are a few possibilities:
itemaT? Yes. Otherwise, it presumably couldn’t be passed into theisMembermethod. The compiler would disallow it. (See Alex’s caveat in the comments below.)Is
itemaTest? YourisMembermethod as it is written would test this, but I’m sensing a code smell here. Why would you expect aTto also be aTest, but only some of the time? You may want to reconsider how you’re organizing your classes. Also, if this is really what you want, then your method could be written as:Which begs the question: why have a method like this in the first place? Which is easier to write?
or
I would argue that the first one is simpler, and most Java developers will understand what it means more readily than a custom method.
Is
itemaTest<T>? There is no way to know this at run time because Java implements generics using erasure. If this is what you want, you’ll have to modify the method signature to be like Mike Myers’s example.