TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
java命令行工具中有一个javap,可以帮我们输出一个类的方法列表,有时候很有用啊!尤其是象我这样 对java API记忆模糊的人,如图是查Date类的输出
C:java>javap java.util.Date
Compiled from Date.java
public class java.util.Date extends java.lang.Object implements java.io.Serializ able, java.lang.Cloneable, java.lang.Comparable {
public java.util.Date();
public java.util.Date(long);
public java.util.Date(int,int,int);
public java.util.Date(int,int,int,int,int);
public java.util.Date(int,int,int,int,int,int);
public java.util.Date(java.lang.String);
public java.lang.Object clone();
public static long UTC(int, int, int, int, int, int);
public static long parse(java.lang.String);
public int getYear();
public void setYear(int);
public int getMonth();
public void setMonth(int);
public int getDate();
public void setDate(int);
public int getDay();
public int getHours();
public void setHours(int);
public int getMinutes();
public void setMinutes(int);
public int getSeconds();
public void setSeconds(int);
public long getTime();
public void setTime(long);
public boolean before(java.util.Date);
public boolean after(java.util.Date);
public boolean equals(java.lang.Object);
public int compareTo(java.util.Date);
public int compareTo(java.lang.Object);
public int hashCode();
public java.lang.String toString();
public java.lang.String toLocaleString();
public java.lang.String toGMTString();
public int getTimezoneOffset();
static {};
}
下面的程序有相似的功能,它利用了java反射API
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
public class MyJavaP {
public static void main(String[] argv) {
MyJavaP pp = new MyJavaP();
if (argv.length == 0) {
System.err.println("Usage: javap className [...]");
System.exit(1);
} else for (int i=0; i<argv.length; i++)
pp.doClass(argv);//分别处理从命令行输入的每一个类名
}
protected void doClass(String className) {
try {
Class c = Class.forName(className);//动态载入类
//输出类的修饰符
System.out.println(Modifier.toString(c.getModifiers()) + " " + c + " {");
int i, mods;
Field fields[] = c.getDeclaredFields();//获得类声明的所有字段
for (i = 0; i < fields.length; i++) {
if(!Modifier.isPrivate(fields.getModifiers())&& ! Modifier.isProtectedfieldsi].getModifiers()))
System.out.println(" " + fields);//输出公共的字段
}
Method methods[] = c.getDeclaredMethods();
for (i = 0; i < methods.length; i++) {
if (!Modifier.isPrivate(methods.getModifiers())&&!Modifier.isProtected (methodsi].getModifiers()))
System.out.println(" " + methods);//输出公共的方法
}
} catch (ClassNotFoundException e) {
System.err.println("Error: Class " +className + " not found!");
} catch (Exception e) {
System.err.println(e);
} finally {
System.out.println("}");
}
}
}
源码下载:http://file.javaxxz.com/2014/10/31/235827625.zip |
|