使用 Java 反射列出类的方法


可以使用 java.lang.Class.getDeclaredMethods() 方法列出类的类方法。此方法返回一个数组,其中包含具有 public、private、protected 和默认访问权限的所有 Method 对象。但是,不包括继承的方法。

此外,如果类或接口没有方法,或者 Class 对象中表示基本类型、数组类或 void,则 getDeclaredMethods() 方法返回一个长度为零的数组。

一个展示的程序如下 −

示例

 实时演示

import java.lang.reflect.*;
public class Demo {
   public static void main(String[] args) {
      Class c = Thread.class;
      Method[] methods = c.getDeclaredMethods();
      for(int i = 0; i < methods.length; i++) {
         System.out.println("The method is: " + methods[i].toString());
      }
   }
}

输出

The method is: public void java.lang.Thread.run()
The method is: private void java.lang.Thread.exit()
The method is: private void java.lang.Thread.dispatchUncaughtException(java.lang.Throwable)
The method is: public java.lang.String java.lang.Thread.toString()
The method is: protected java.lang.Object java.lang.Thread.clone() throws java.lang.CloneNotSupportedException
The method is: public boolean java.lang.Thread.isInterrupted()
The method is: private native boolean java.lang.Thread.isInterrupted(boolean)
The method is: public static native java.lang.Thread java.lang.Thread.currentThread()
The method is: private static native void java.lang.Thread.registerNatives()
The method is: public final java.lang.String java.lang.Thread.getName()
The method is: public synchronized void java.lang.Thread.start()
The method is: public final synchronized void java.lang.Thread.join(long,int) throws java.lang.InterruptedException
The method is: public final synchronized void java.lang.Thread.join(long) throws java.lang.InterruptedException
The method is: public final void java.lang.Thread.join() throws java.lang.InterruptedException
The method is: private void java.lang.Thread.init(java.lang.ThreadGroup,java.lang.Runnable,java.lang.String,long,java.security.AccessControlContext,boolean)
The method is: private void java.lang.Thread.init(java.lang.ThreadGroup,java.lang.Runnable,java.lang.String,long)
The method is: public final java.lang.ThreadGroup java.lang.Thread.getThreadGroup()
The method is: public java.lang.StackTraceElement[] java.lang.Thread.getStackTrace()
The method is: public static native boolean java.lang.Thread.holdsLock(java.lang.Object)
The method is: public final void java.lang.Thread.checkAccess()
The method is: public static void java.lang.Thread.dumpStack()
The method is: public static native void java.lang.Thread.yield()
The method is: public final void java.lang.Thread.setPriority(int)
The method is: public final void java.lang.Thread.setDaemon(boolean)
The method is: private static synchronized int java.lang.Thread.nextThreadNum()
The method is: private static synchronized long java.lang.Thread.nextThreadID()
The method is: void java.lang.Thread.blockedOn(sun.nio.ch.Interruptible)
The method is: public static native void java.lang.Thread.sleep(long) throws java.lang.InterruptedException
The method is: public static void java.lang.Thread.sleep(long,int) throws java.lang.InterruptedException
The method is: private native void java.lang.Thread.start0()
The method is: public final synchronized void java.lang.Thread.stop(java.lang.Throwable)
The method is: public final void java.lang.Thread.stop()
The method is: public void java.lang.Thread.interrupt()
The method is: public static boolean java.lang.Thread.interrupted()
The method is: public void java.lang.Thread.destroy()
The method is: public final native boolean java.lang.Thread.isAlive()
The method is: public final void java.lang.Thread.suspend()
The method is: public final void java.lang.Thread.resume()
The method is: public final int java.lang.Thread.getPriority()
The method is: public final synchronized void java.lang.Thread.setName(java.lang.String)
The method is: public static int java.lang.Thread.activeCount()
The method is: public static int java.lang.Thread.enumerate(java.lang.Thread[])
The method is: public native int java.lang.Thread.countStackFrames()
The method is: public final boolean java.lang.Thread.isDaemon()
The method is: public java.lang.ClassLoader java.lang.Thread.getContextClassLoader()
The method is: public void java.lang.Thread.setContextClassLoader(java.lang.ClassLoader)
The method is: public static java.util.Map java.lang.Thread.getAllStackTraces()
The method is: private static boolean java.lang.Thread.isCCLOverridden(java.lang.Class)
The method is: private static boolean java.lang.Thread.auditSubclass(java.lang.Class)
The method is: private static native java.lang.StackTraceElement[][] java.lang.Thread.dumpThreads(java.lang.Thread[])
The method is: private static native java.lang.Thread[] java.lang.Thread.getThreads()
The method is: public long java.lang.Thread.getId()
The method is: public java.lang.Thread$State java.lang.Thread.getState()
The method is: public static void java.lang.Thread.setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler)
The method is: public static java.lang.Thread$UncaughtExceptionHandler java.lang.Thread.getDefaultUncaughtExceptionHandler()
The method is: public java.lang.Thread$UncaughtExceptionHandler java.lang.Thread.getUncaughtExceptionHandler()
The method is: public void java.lang.Thread.setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler)
The method is: static void java.lang.Thread.processQueue(java.lang.ref.ReferenceQueue,java.util.concurrent.ConcurrentMap)
The method is: private native void java.lang.Thread.setPriority0(int)
The method is: private native void java.lang.Thread.stop0(java.lang.Object)
The method is: private native void java.lang.Thread.suspend0()
The method is: private native void java.lang.Thread.resume0()
The method is: private native void java.lang.Thread.interrupt0()
The method is: private native void java.lang.Thread.setNativeName(java.lang.String)

更新于:2020 年 6 月 25 日

2 千多次浏览

开启您的 职业生涯

完成课程获取认证

开始
广告