在Java中,调用类的方法有两种方式:静态方法直接调用,非静态通过类的对象调用

在反射中可以根据需要指定要调用的方法,而不必在编程时确定,不仅限于public或者private

public class MethodTest {

	public static void main(String[] args) {
		try {
			System.err.println("调用Math类的静态方法sin():");
			Method sinMethod = Math.class.getDeclaredMethod("sin", Double.TYPE);
			Double sin = (Double)sinMethod.invoke(null, new Integer(1));
			System.out.println("1的正弦值是:"+sin);
			System.err.println("调用String类的非静态方法equals():");
			Method equalsMethod = String.class.getDeclaredMethod("equals",Object.class);
			Boolean equals = (Boolean)equalsMethod.invoke(new String("柯基"),"柯基");
			System.out.println("字符串是否是柯基:"+equals);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

输出结果如下:

wKioL1jOIcbyb4zGAAAltOwKq8I424.jpg