У меня есть класс Bean User. Я динамически создаю объект во время выполнения. Я могу установить значение в методе setter, но у этого метода set есть несколько аргументов.
Это класс пользователя My Bean
public class User {
private String name1;
private String name2;
private String name3;
private int age1;
private int age2;
public String getName1() {
return name1;
}
public void setName1(String name1,String name2,String name3) {
this.name1 = name1;
this.name2 = name2;
this.name3 = name3;
}
public int getAge1() {
return age1;
}
public void setAge1(int age1,int age2) {
this.age1 = age1;
this.age2 = age2;
}
@Override
public String toString() {
return "StudentUser [name1=" + name1 + ", name2=" + name2 + ", name3=" + name3 + ", age1=" + age1 + ", age2="
+ age2 + "]";
}
Я хочу вызвать этот метод установки, используя отражение. Я могу найти что-нибудь во время выполнения, например, метод Name, метод Parameter Type, а также иметь порядок типа Parameter.
для моего случая у меня есть некоторый набор значений по умолчанию для метода сеттера, таких как примитивный тип и не примитивный тип, я нахожу тип аргументов метода во время выполнения и вызываю метод сеттера и устанавливаю для них значения по умолчанию
Мой основной метод: -
public static Object getBean(String beanClassName) throws Exception
{
Class klass = Class.forName(beanClassName); //->Get Class Name By Path
Object obj = klass.newInstance(); //->Create The Object of Class
Method[] b = klass.getDeclaredMethods(); //->Get Declared Method in Class
for(Method m : b)
{
Type[] pType = m.getGenericParameterTypes();
for(int i=0;i<pType.length; i++)
{
System.out.println("The Arguments :"+pType[i]+" Arguments Order :"+i);
if(pType[i].equals(String.class))
{
m.setAccessible(true);
m.invoke(obj,"Hello");
}
else if(pType[i].equals(int.class))
{
System.out.println("Machted int");
m.setAccessible(true);
m.invoke(obj,21);
}
}
}
return obj;
}
Я могу сделать это, у меня есть исполняемая функция ArgumentMissMacth. Я хочу установить для каждого типа строки значение «Hello», а для каждого типа Int - 23 и «Object to Null». Как можно динамически определить порядок установки.
В моем случае я бы знал тип параметра метода, но должен установить значение по умолчанию в соответствии с типом параметра метода.