1:getMethods(),该方法是获取本类以及父类或者父接口中所有的公共方法(public修饰符修饰的)
2:getDeclaredMethods(),该方法是获取本类中的所有方法,包括私有的(private、protected、默认以及public)的方法。
代码演示:
1、定义父类:
package reflection;
/**
* Created with IntelliJ IDEA.
* Description:
* User: HuYu
* Date: 2021-05-09
* Time: 15:58
*/
public class ReflectionParent {
public void start() {
System.out.println("starting...");
}
protected void eat() {
System.out.println("eating...");
}
void end() {
System.out.println("ending...");
}
@SuppressWarnings("unused")
private void sing() {
System.out.println("sing...");
}
}
2、定义子类ReflectionDemo1继承父类,定义两个自己的方法
package reflection;
import org.junit.Test;
import java.lang.reflect.Method;
/**
* Created with IntelliJ IDEA.
* Description:
* User: HuYu
* Date: 2021-05-09
* Time: 16:00
*/
public class ReflectionDemo1 extends ReflectionParent {
@SuppressWarnings("unused")
private void read() {
System.out.println("reading...");
}
public void write() {
System.out.println("writing...");
}
/**
*/
@Test
public void testGetMethods() {
Method[] methods = this.getClass().getMethods();
for (Method m : methods) {
System.out.println(m.getName());
}
}
@Test
public void testGetDeclaredMethods() {
Method[] methods = this.getClass().getDeclaredMethods();
for (Method m : methods) {
//System.out.println(m.getName());
}
}
}
运行testGetMethods()方法:
运行testGetDeclaredMethods()方法
总结:
其他的方法,类似字段以及构造方法和方法类似
eg::getFileds()与getDeclaredFileds()