sebastiangeiger sebastiangeiger - 1 year ago 91
Java Question

Test if object implements interface

This has probably been asked before, but a quick search only brought up the same question asked for C#. See here.

What I basically want to do is to check wether a given object implements a given interface.

I kind of figured out a solution but this is just not comfortable enough to use it frequently in if or case statements and I was wondering wether Java does not have built-in solution.

public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
return false;

EDIT: Ok, thanks for your answers. Especially to Damien Pollet and Noldorin, you made me rethink my design so I don't test for interfaces anymore.

dfa dfa
Answer Source

The instanceof operator does the work in a NullPointerException safe way. For example:

 if ("" instanceof {
     // it's true

yields true. Since:

 if (null instanceof AnyType) {
     // never reached

yields false, the instanceof operator is null safe (the code you posted isn't).

instanceof is the built-in, compile-time safe alternative to Class#isInstance(Object)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download