OnJava8-Examples/typeinfo/ShowMethods.java

71 lines
2.3 KiB
Java
Raw Normal View History

2015-09-07 11:44:36 -06:00
// typeinfo/ShowMethods.java
2015-12-15 11:47:04 -08:00
// (c)2016 MindView LLC: see Copyright.txt
2015-11-15 15:51:35 -08:00
// We make no guarantees that this code is fit for any purpose.
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
2015-06-15 17:47:35 -07:00
// Using reflection to show all the methods of a class,
2016-01-25 18:05:55 -08:00
// even if the methods are defined in the base class
2016-07-28 13:42:03 -06:00
// {java ShowMethods ShowMethods}
2015-06-15 17:47:35 -07:00
import java.lang.reflect.*;
import java.util.regex.*;
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) {
2015-11-03 12:00:44 -08:00
System.out.println(usage);
2015-06-15 17:47:35 -07:00
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)
2015-11-03 12:00:44 -08:00
System.out.println(
2015-06-15 17:47:35 -07:00
p.matcher(method.toString()).replaceAll(""));
for(Constructor ctor : ctors)
2015-12-02 09:20:27 -08:00
System.out.println(
p.matcher(ctor.toString()).replaceAll(""));
2015-06-15 17:47:35 -07:00
lines = methods.length + ctors.length;
} else {
for(Method method : methods)
if(method.toString().contains(args[1])) {
2016-01-25 18:05:55 -08:00
System.out.println(p.matcher(
method.toString()).replaceAll(""));
2015-06-15 17:47:35 -07:00
lines++;
}
for(Constructor ctor : ctors)
if(ctor.toString().contains(args[1])) {
2015-11-03 12:00:44 -08:00
System.out.println(p.matcher(
2015-06-15 17:47:35 -07:00
ctor.toString()).replaceAll(""));
lines++;
}
}
} catch(ClassNotFoundException e) {
2015-11-03 12:00:44 -08:00
System.out.println("No such class: " + e);
2015-06-15 17:47:35 -07:00
}
}
2015-09-07 11:44:36 -06:00
}
/* Output:
2015-06-15 17:47:35 -07:00
public static void main(String[])
public final void wait() throws InterruptedException
public final void wait(long,int) throws
InterruptedException
public final native void wait(long) throws
InterruptedException
public boolean equals(Object)
public String toString()
public native int hashCode()
public final native Class getClass()
public final native void notify()
public final native void notifyAll()
public ShowMethods()
2015-09-07 11:44:36 -06:00
*/