Приведение типов в 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 шт):
Если вы хотите использовать 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(), а вот реализация этого метода может быть везде разная.