使用 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)
广告