Тут нам поможет великий и ужасный механизм рефлексии, который при умелом подходе поможет разобрать любой объект мира 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
Как вы видите, даже приватные методы с лёгкостью можно достать из объекта.
Комментарии: