1. 如果当前类是数组,会返回 Object 中的 public 方法

    System.out.println(Stream.of(int[].class.getMethods()).map(e -> {
             StringBuilder sb = new StringBuilder();
             sb.append(Modifier.toString(e.getModifiers())).append(" ");
             sb.append(e.getReturnType().getName()).append(" ");
             sb.append(e.getName());
             sb.append("(").append(Stream.of(e.getParameterTypes()).map(p -> p.getName()).collect(Collectors.joining(","))).append(")");
             return sb.toString();
         }).collect(Collectors.joining("\r\n")));
    
          // public final void wait()
          // public final void wait(long,int)
          // public final native void wait(long)
          // public boolean equals(java.lang.Object)
          // public java.lang.String toString()
          // public native int hashCode()
          // public final native java.lang.Class getClass()
          // public final native void notify()
          // public final native void notifyAll()
          

  2. 原生数据类型 或 void,方法数组的长度为 0

    System.out.println(int.class.getMethods().length); \\ 0
         System.out.println(void.class.getMethods().length); \\ 0

  3. 返回类中的所有公共方法(含公共静态方法、公共桥接方法)和父类中的公共方法和实现的接口的公共方法(含默认方法和抽象方法,但不含静态方法)

    /**
          * -- 本类方法
          * public static void publicStaticMethod()
          * public void publicMethod()
          * public void publicMethodParent()
          *
          * -- 本类方法和桥方法(前提是桥接方法是 public),合成方法不行哦。合成方法访问权限是 default 的。
          * public volatile java.lang.Number getBridgeReturn()
          * public java.lang.Integer getBridgeReturn()
          * public volatile void getBridge(java.lang.Object)
          * public void getBridge(java.lang.String)
          *
          * -- 父类方法
          * public static void publicStaticMethodParent()
          * public abstract void publicAbstractMethod()
          *
          * -- 实现的接口方法
          * public abstract void publicAbstractMethodMagic()
          * public void defaultMethodMagic()
          */
         System.out.println(Stream.of(Child.class.getMethods()).map(e -> {
             StringBuilder sb = new StringBuilder();
             sb.append(Modifier.toString(e.getModifiers())).append(" ");
             sb.append(e.getReturnType().getName()).append(" ");
             sb.append(e.getName());
             sb.append("(").append(Stream.of(e.getParameterTypes()).map(p -> p.getName()).collect(Collectors.joining(","))).append(")");
             return sb.toString();
         }).collect(Collectors.joining("\r\n")));
abstract class Child extends Parent<String> implements Magic {



    public class Inner {
        public void print() {
            privateMethod();
        }
    }

    @Override
    public Integer getBridgeReturn() {
        return 0;
    }

    @Override
    public void getBridge(String o) {

    }

    private void privateMethod() {

    }

    private static void privateStatusMethod() {

    }

    protected void protectedMethod() {

    }

    protected static void protectedStaticMethod() {

    }

    void defaultMethod() {

    }

    static void defaultStaticMethod() {

    }

    public void publicMethod() {

    }

    public static void publicStaticMethod() {

    }


}

public abstract class Parent<T> {


    public abstract void getBridge(T t);

    public Number getBridgeReturn() {
        return null;
    }


    abstract void defaultAbstractMethod();

    protected abstract void protectedAbstractMethod();

    public abstract void publicAbstractMethod();

    private void privateMethodParent() {

    }

    private static void privateStatusMethodParent() {

    }

    protected void protectedMethodParent() {

    }

    protected static void protectedStaticMethodParent() {

    }

    void defaultMethodParent() {

    }

    static void defaultStaticMethodParent() {

    }

    public void publicMethodParent() {

    }

    public static void publicStaticMethodParent() {

    }


}

public interface Magic {

    default void defaultMethodMagic() {

    }
    static void staticMethodMagic() {

    }
    void publicAbstractMethodMagic();
}

NewBie
10 声望0 粉丝