-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathShowMethods.java
More file actions
76 lines (66 loc) · 2.54 KB
/
ShowMethods.java
File metadata and controls
76 lines (66 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package typeinfo;
import java.lang.reflect.*;
import java.util.regex.*;
/**
* RUN:
* javac typeinfo/ShowMethods.java && java typeinfo.ShowMethods typeinfo.ShowMethods
* OUTPUT:
* public static void main(String[])
* public final native Class getClass()
* public native int hashCode()
* public boolean equals(Object)
* public String toString()
* public final native void notify()
* public final native void notifyAll()
* public final void wait(long,int) throws InterruptedException
* public final void wait() throws InterruptedException
* public final native void wait(long) throws InterruptedException
* public ShowMethods()
*/
public class ShowMethods {
private static String usage = "usage:\n"
+ "ShowMethods qualified.class.name\n"
+ "To show all methods in class or:\n"
+ "ShowMethods qualified.class.name word\n"
+ "To search for methods involving 'word'";
private static Pattern p = Pattern.compile("\\w+\\.");
public static void main(String[] args)
{
if (args.length < 1) {
System.out.println(usage);
System.exit(0);
}
int lines = 0;
try {
Class<?> c = Class.forName(args[0]);
Method[] methods = c.getMethods();
Constructor[] ctors = c.getConstructors();
if (args.length == 1) {
for (Method method : methods) {
System.out.println(p.matcher(method.toString()).replaceAll(""));
}
for (Constructor ctor : ctors) {
System.out.println(p.matcher(ctor.toString()).replaceAll(""));
}
lines = methods.length + ctors.length;
}
else {
for (Method method : methods) {
if (method.toString().indexOf(args[1]) != -1) {
System.out.println(p.matcher(method.toString()).replaceAll(""));
lines++;
}
}
for (Constructor ctor : ctors) {
if (ctor.toString().indexOf(args[1]) != -1) {
System.out.println(p.matcher(ctor.toString()).replaceAll(""));
lines++;
}
}
}
}
catch(ClassNotFoundException e) {
System.out.println("No such class: " + e);
}
}
}