Как достичь латентной типизации в java?

Как говорит нам википедия

Неявная типизация, латентная типизация или утиная типизация (англ. Duck typing) в ООП-языках — определение факта реализации определённого интерфейса объектом без явного указания или наследования этого интерфейса, а просто по реализации полного набора его методов.

Как можно сделать это в java не используя интерфейсы?


Ответы (1 шт):

Автор решения: Alex

Это можно сделать через java рефлексию. Пример кода:

class FirstClass {
    public void doSomething() {
        System.out.println("Doing useful work in the first class");
    }
}

class SecondClass {
    public void doSomething() {
        System.out.println("Doing useful work in the second class");
    }
}


public class Main {
    public static void perform(Object obj) throws NoSuchMethodException,
            InvocationTargetException,
            IllegalAccessException {
        Class<?> cl = obj.getClass();
        Method method = cl.getMethod("doSomething");
        method.invoke(obj);
    }

    public static void main(String[] args) {
        SecondClass obj = new SecondClass();
        FirstClass obj2 = new FirstClass();

        try {
            perform(obj);
            perform(obj2);
        } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
            e.printStackTrace();
        }

    }
}
→ Ссылка