Приведение типов в Java через Reflection

Можно ли как-то привести один тип к другому, не создавая кучу ifов? Тип заранее не знаю, так как получаю его через Reflection.

К примеру, если я передаю Int , а в параметрах метода стоит Float, можно ли как-то привести одно к другому?

    String param = availibleMethods.get(m.getName());
    Object value = null;
    if(param != null)
        value = attachment.arguments.get(param);
    
    if(value == null)
        return;
    
    Parameter[] parameters = m.getParameters();
    
    if(parameters.length != 1)
            return;
    
    Class type = parameters[0].getType();
        
    m.invoke(obj , value);

Пишу ботов для Telegram, нужно передавать вложения, а в Java Telegram API для этого создано 10 классов с, по сути, одинаковыми методами. Хочу сделать единый обработчик для этого не городя огромную кучу ifов.


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

Автор решения: Sergei Buvaka

Если вы хотите использовать 10 классов с одинаковыми методами, но разной реализацией, то вам не рефлексия нужна, а абстракция.

Условно есть интерфейс

interface SomeInterface {
    void doSomething();
}

И есть классы:

class A implements SomeInterface {

    @Override
    void doSomething() {
        // do something
    }
}

class B implements SomeInterface {

    @Override
    void doSomething() {
        // do something
    }
}

и т.д.

Тогда в коде вы можете работать с ними не как с отдельными классами, а как с объектом SomeInterface

SomeInterface a = new A();
SomeInterface b = new B();

Вы так же можете создавать из них списки. И вызывать метод doSomething(), а вот реализация этого метода может быть везде разная.

→ Ссылка