Dog class:
package com.mypackage.bean;
public class Dog {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void printDog(String name, int age) {
        System.out.println(name + " is " + age + " year(s) old.");
    }
}ReflectionDemo class:
package com.mypackage.reflection;
import java.lang.reflect.Method;
public class ReflectionDemo {
    public static void main(String[] args) throws Exception {
        String dogClassName = "com.mypackage.bean.Dog";
        Class<?> dogClass = Class.forName(dogClassName); // convert string classname to class
        Object dog = dogClass.newInstance(); // instantiate object of class
        String methodName = "";
        // with single parameter, return void
        methodName = "setName";
        Method setNameMethod = dog.getClass().getMethod(methodName, String.class);
        setNameMethod.invoke(dog, "Mishka"); // pass arg
        // without parameters, return string
        methodName = "getName";
        Method getNameMethod = dog.getClass().getMethod(methodName);
        String name = (String) getNameMethod.invoke(dog); // explicit cast
        // with multiple parameters
        methodName = "printDog";
        Class<?>[] paramTypes = new Class[2];
        paramTypes[0] = String.class;
        paramTypes[1] = int.class;      
        Method printDogMethod = dog.getClass().getMethod(methodName, paramTypes);
        printDogMethod.invoke(dog, name, 3); // pass args       
    }
}Output: Mishka is 3 year(s) old.