14章类型信息---反射
来源:互联网 发布:西门子plc编程基本训练 编辑:程序博客网 时间:2024/06/05 02:29
//: typeinfo/ShowMethods.java
// Using reflection to show all the methods of a class,
// even if the methods are defined in the base class.
// {Args: ShowMethods}
import java.lang.reflect.*;
import java.util.regex.*;
import static net.mindview.util.Print.*;
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) {
print(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)
print(
for(Constructor ctor : ctors)
print(p.matcher(ctor.toString()).replaceAll(""));
//print(ctor.toString());
lines = methods.length + ctors.length;
} else {
for(Method method : methods)
if(method.toString().indexOf(args[1]) != -1) {
print(
p.matcher(method.toString()).replaceAll(""));
lines++;
}
for(Constructor ctor : ctors)
if(ctor.toString().indexOf(args[1]) != -1) {
print(p.matcher(
ctor.toString()).replaceAll(""));
lines++;
}
}
} catch(ClassNotFoundException e) {
print("No such class: " + e);
}
}
} /* Output:
public static void main(String[])
public native int hashCode()
public final native Class getClass()
public final void wait(long,int) throws InterruptedException
public final void wait() throws InterruptedException
public final native void wait(long) throws InterruptedException
public boolean equals(Object)
public String toString()
public final native void notify()
public final native void notifyAll()
public ShowMethods()
// Using reflection to show all the methods of a class,
// even if the methods are defined in the base class.
// {Args: ShowMethods}
import java.lang.reflect.*;
import java.util.regex.*;
import static net.mindview.util.Print.*;
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) {
print(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)
print(
p.matcher(method.toString()).replaceAll(""));//这里用的正则表达式,是为了去除,
//像public final void java.lang.Object.wait() throws java.lang.InterruptedException中的java.lang.Object.和java.lang.
//去除之后,就变成了public final void wait() throws InterruptedException
//print(method.toString());for(Constructor ctor : ctors)
print(p.matcher(ctor.toString()).replaceAll(""));
//print(ctor.toString());
lines = methods.length + ctors.length;
} else {
for(Method method : methods)
if(method.toString().indexOf(args[1]) != -1) {
print(
p.matcher(method.toString()).replaceAll(""));
lines++;
}
for(Constructor ctor : ctors)
if(ctor.toString().indexOf(args[1]) != -1) {
print(p.matcher(
ctor.toString()).replaceAll(""));
lines++;
}
}
} catch(ClassNotFoundException e) {
print("No such class: " + e);
}
}
} /* Output:
public static void main(String[])
public native int hashCode()
public final native Class getClass()
public final void wait(long,int) throws InterruptedException
public final void wait() throws InterruptedException
public final native void wait(long) throws InterruptedException
public boolean equals(Object)
public String toString()
public final native void notify()
public final native void notifyAll()
public ShowMethods()
*///:~
如果要得到指定的构造器,构造对象
Toy.class.getDeclaredConstructor(int.class).newInstance(1);
下面是Toy类:
class Toy {
Toy() {
print("Creating Toy() object");
}
Toy(int i) {
print("Creating Toy(" + i + ") object");
}
}
class FancyToy extends Toy
implements HasBatteries, Waterproof, Shoots {
FancyToy() { super(1); }
}
0 0
- 14章类型信息---反射
- 类型信息:反射-Class
- “逐”类型信息“论”反射
- java反射---获取类型信息
- 反射之获取类型信息
- 14章类型信息--注册工厂---instandceof与Class的等价性--反射
- 第十四章 类型信息 反射 动态代理 空对象 接口和类型信息
- 14章类型信息
- 黑马程序员_Java类型信息与反射
- 深入java--类型信息(反射)
- 反射(二)之虚拟机中泛型类型信息
- .Net 中的反射(查看基本类型信息)
- c#反射机制学习和利用反射获取类型信息
- 第14章 类型信息
- 第14章 类型信息
- 反射_01概述和反射中的运行时类型以及查看类型信息
- Net 中的反射(查看基本类型信息) - Part.2
- .Net 中的反射(查看基本类型信息) - Part.2
- 第十六周 OJ 指针引出奇数因子
- 14分析3
- C/S开发模式与B/S开发模式间的比较
- Git最新版本 Git-1.9.4-preview
- csdn begin~
- 14章类型信息---反射
- 确定性多项式时间
- Android SDK manager 下载问题
- Android开发 调用系统相机出现的问题
- SVN迁移update地址更换
- 美女主播患癌去世 为生宝宝放弃化疗
- 性能测试中的nnmon使用
- Excel表格定义某行的格式类型和设置下拉框
- Notes on Transfer Learning