Hoe type van een klasse als een parameter te gebruiken?

Hoe zou ik de methode boolean doInstanceof (...) schrijven en aanroepen die een object o en een type t neemt en de waar retourneert als < code> o is een instantie van t , anders false.

Zoiets als:

boolean doInstanceof(Object o, type t)
{
    return o instanceof t;
}

//called like
boolean isInstance = doInstanceof(new MyClass(), MyClass.type())
0

1 antwoord

U kunt de Klasse en de < code> isInstance methode:

boolean doInstanceOf(Object o, Class<?> clazz)
{
    return clazz.isInstance(o);
}

boolean isInstance = doInstanceOf(new MyClass(), MyClass.class)

Let wel, dat vervangt slechts één methodeaanroep door een andere - je kunt net zo goed direct Class.isInstance aanroepen:

boolean isInstance = MyClass.class.isInstance(new MyClass());

(Ik neem aan dat je in werkelijkheid de klasse niet kent tijdens het compileren, anders zou je natuurlijk instanceof moeten gebruiken.)

5
toegevoegd
perfect, bedankt.
toegevoegd de auteur ab11, de bron