java.lang.Class

class.getConstructors()
获取当前类的public构造方法,原生数据类型,void类型,数组,接口的构造方法数量都是0

class.getDeclaredConstructors()
获取当前类的所有构造方法,原生数据类型,void类型,数组,接口的构造方法数量都是0

class.getDeclaredMethods()
获取当前类或接口的所有方法,不包括继承来的方法

  1. 如果有2个方法,并且方法名和方法参数一样,但返回类型不一样,将返回2个方法,如果连返回类型都一样,那只返回一个了
  2. clinit不返回
  3. 如果当前类或接口没有方法,返回的数组长度为0
  4. 如果当前类是一个数组类型或是原生类型或是void类型,返回的数组长度是0
  5. 数组里的方法没有顺序

class.getMethods()
获取当前类或接口的所有public方法,包括继承来的方法

  1. 如果有2个方法,并且方法名和方法参数一样,但返回类型不一样,将返回2个方法,如果连返回类型都一样,那只返回一个了
  2. clinit不返回
  3. 如果是数组类型,将返回从java.lang.Object类中的public方法
  4. 如果是接口类型,不返回从java.lang.Object类中的public方法
  5. 如果类,则返回所有父类以及接口中的所有public方法
  6. void 原生类型,返回数组长度0
  7. 静态方法不返回
  8. 方法没有顺序

class.getInterfaces()
返回类所有实现的接口(不再包含接口所继承的接口)或接口继承的接口

  1. 如果当前类型是一个类,返回所有实现的接口
  2. 如果当前是一个接口,返回所有继承的接口
  3. 如果是类没有实现接口,或接口没有继承其他接口,返回空数组
  4. 如果是原生类型或 void,返回空数组
  5. 如果是数组,返回java.io.Serializable Cloneable

getSuperclass()
返回父类,Object类、接口、原生类型、void返回null,数组则返回Object类

public native boolean isAssignableFrom(Class cls)
如果当前类和参数cls的一样,或者是父类或者父接口,返回true。否则返回false。如果当前类是原生类型,只有参数cls也是原生类型才会返回true。

你可能感兴趣的:(java反射)