Java >> Java tutorial >  >> Tag >> implements

Test om objekt implementerer interface

if (object is IBlah)

eller

IBlah myTest = originalObject as IBlah

if (myTest != null)

Brug af is eller as operatører er den korrekte måde, hvis du kender grænsefladetypen på kompileringstidspunktet og har en forekomst af den type, du tester. Noget, som ingen andre synes at have nævnt, er Type.IsAssignableFrom :

if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}

Jeg synes, det er meget pænere end at se gennem arrayet returneret af GetInterfaces og har den fordel, at de også arbejder for klasser.


Hvis du vil bruge det typecastede objekt efter kontrollen:
Siden C# 7.0:

if (obj is IMyInterface myObj)

Dette er det samme som

IMyInterface myObj = obj as IMyInterface;
if (myObj != null)

Se .NET Docs:Mønstermatching med is # Indtast mønster


Java tag