Как определить, содержит ли переданный объект определённый метод?​

Тут нам поможет великий и ужасный механизм рефлексии, который при умелом подходе поможет разобрать любой объект мира Java по крупицам, а также модифицировать его. Для проверки объекта на содержание какого либо метода изначально нужно получить объект Class данного экземпляра, а уж из него можно вытянуть всё необходимое. Как обычно, пример в коде ниже:

/*Класс, получающий список методов объекта*/
public class GetMethodClass {
    static void getMethods(Object target){
        Class clazz = target.getClass();
        Method[] methods = clazz.getDeclaredMethods();
        for(Method m:methods){
            System.out.println(Modifier.toString(m.getModifiers()) +" "+ m.getName());
        }
    }

    public static void main(String[] args) {
        getMethods(new SomeClassWithMethods());
    }
}
/*Класс с каким-то набором методов*/
class SomeClassWithMethods{
    private   void someMethod(){    }
    public int getInt(){
        return 0;
    }
    void f(){}
    protected final void proFinMeth(){}
}

Вывод: 
public getInt
private someMethod
f
protected final proFinMeth

Как вы видите, даже приватные методы с лёгкостью можно достать из объекта.

Понравилась статья? Поделиться с друзьями:

Комментарии:

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: