Question: I getting class by name and i need to update them with respective data and my question is how to do it with java 
I want to add the method some dummy data .
I don't know the class type I just getting the class name and use reflection to get his data 

I use this code to get the class instance and 

```
Class<?> classHandle = Class.forName(className);

Object myObject = classHandle.newInstance();

// iterate through all the methods declared by the class
for (Method method : classHandle.getMethods()) {
    // find all the set methods
    if (method.getName().matches("set[A-Z].*")

```

And know that I find the list of the set method I want to update it with data 
how can I do that .

assume that In class name I got person and the class have setSalary and setFirstName etc 
how can I set them with reflection ?

```
public class Person {

    public void setSalery(double salery) {
        this.salery = salery;
    }

    public void setFirstName(String FirstName) {
        this.FirstName = FirstName;
    }   
}

```

Answer: 
Instead of trying to call a setter, you could also just directly set the value to the property using reflection. For example:

```java
public static boolean set(Object object, String fieldName, Object fieldValue) {
    Class<?> clazz = object.getClass();
    while (clazz != null) {
        try {
            Field field = clazz.getDeclaredField(fieldName);
            field.setAccessible(true);
            field.set(object, fieldValue);
            return true;
        } catch (NoSuchFieldException e) {
            clazz = clazz.getSuperclass();
        } catch (Exception e) {
            throw new IllegalStateException(e);
        }
    }
    return false;
}

```

Call:

```java
Class<?> clazz = Class.forName(className);
Object instance = clazz.newInstance();
set(instance, "salary", 15);
set(instance, "firstname", "John");

```

---

FYI, here is the equivalent *generic getter*:

```java
@SuppressWarnings("unchecked")
public static <V> V get(Object object, String fieldName) {
    Class<?> clazz = object.getClass();
    while (clazz != null) {
        try {
            Field field = clazz.getDeclaredField(fieldName);
            field.setAccessible(true);
            return (V) field.get(object);
        } catch (NoSuchFieldException e) {
            clazz = clazz.getSuperclass();
        } catch (Exception e) {
            throw new IllegalStateException(e);
        }
    }
    return null;
}

```

Call:

```java
Class<?> clazz = Class.forName(className);
Object instance = clazz.newInstance();
int salary = get(instance, "salary");
String firstname = get(instance, "firstname");

```
```
if (method.getName().matches("set[A-Z].*") {
  method.invoke(person,salary)
  // and so on
}

```

to know the parameters you can issue `method.getPagetParameterTypes()`
based on the result construct your parameters and supply.