package classloaderdemo5;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class methodDemo {
public static void main(String[] args) throws Exception {
// method1();
// method2();
// method3();
}
private static void method3() throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
// 获取Class对象
Class<?> aClass = Class.forName("classloaderdemo5.Student");
// 获取类里面单个方法(私有和公共都可以,有返回值)
Method method = aClass.getDeclaredMethod("function3");
// 获取类里面的构造方法
Constructor<?> constructor = aClass.getDeclaredConstructor();
// 创建一个Student对象,当做方法的调用者
Student student = (Student)constructor.newInstance();
// 调用方法
// 返回一个object类型的参数
Object invoke = method.invoke(student);
System.out.println(invoke);
}
private static void method2() throws Exception {
// 获取Class对象
Class<?> aClass = Class.forName("classloaderdemo5.Student");
// 获取类中单个method(私有和公共都可以)
Method method = aClass.getDeclaredMethod("function2", String.class);
// 创建一个Student对象,当做方法的调用者
Student student = (Student)aClass.newInstance();
// 调用方法,并且将参数传过去
Object hhh = method.invoke(student, "hhh");
}
private static void method1() throws Exception {
// 获取Class对象
Class<?> aClass = Class.forName("classloaderdemo5.Student");
// 获取里面的method对象show(私有方法和公共都可以,无参数无返回值)
Method method = aClass.getDeclaredMethod("show");
// 去除权限
method.setAccessible(true);
// 创建一个Student对象,当做方法的调用者
Student student =(Student)aClass.newInstance();
// 运行方法
Object invoke = method.invoke(student);
}
}
package classloaderdemo5;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class Student {
public String name;
public int age;
public String gender;
private int money;
private void show() {
System.out.println("私有的show方法,无参无返回值");
}
public void function1() {
System.out.println("公共的function1,无参无返回值");
}
public void function2(String name) {
System.out.println("公共的function2方法,有参数:" + name+"无返回值");
}
public String function3(){
System.out.println("公共的function3方法,无参有返回值");
return "aaa";
}
}