最后贴一段代码,某高人写的,卡卡
import java.io.IOException;
import java.io.Serializable;
import java.io.Writer;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.lang.reflect.WildcardType;
import java.util.ArrayList;
import java.util.List;
/*******************************************************************************
*
*
* @作者:XXX
* @日期:2007-3-11
* @版权:北京易迈普技术有限公司版权所有
******************************************************************************/
public class GenericsTypeScanner {
private Writer writer;
public GenericsTypeScanner() {
}
/**
* scan a generic class,output the originate declaration to the destination
* writer。
*
* @param writer
* @param clazz
*/
public void 扫描(Writer writer, Class clazz) {
this.writer = writer;
try {
printClass(clazz);
for (Method method : clazz.getDeclaredMethods())
printMethod(method);
} catch (IOException e) {
e.printStackTrace(System.out);
}
}
private void printClass(Class clazz) throws IOException {
writer.write(clazz.getName());
printTypes(clazz.getTypeParameters(), "</span><span>",
"</span><span class=\"string\">",
"</span><span>, </span><span class=\"string\">");
// scan the super class
Type superClazz = clazz.getGenericSuperclass();
if (superClazz != null) {
writer.write(" extends ");
printType(superClazz);
}
// scan the interfaces
printTypes(clazz.getGenericInterfaces(), " implements ", ",", "");
writer.write("\n");
}
private void printMethod(Method method) throws IOException {
String name = method.getName();
writer.write(Modifier.toString(method.getModifiers()));
writer.write(" ");
printTypes(method.getTypeParameters(), "</span><span>",
"</span><span class=\"string\">",
"</span><span>, </span><span class=\"string\">");
printType(method.getGenericReturnType());
writer.write(" ");
writer.write(name);
writer.write("(");
printTypes(method.getGenericParameterTypes(), "", ", ", "");
writer.write(")\n");
}
private void printTypes(Type[] types, String prefix, String seperator,
String suffix) throws IOException {
if (types.length > 0)
writer.write(prefix);
for (int i = 0; i < types.length; i++) {
if (i > 0)
writer.write(seperator);
printType(types[i]);
}
if (types.length > 0)
writer.write(suffix);
}
private void printType(Type type) throws IOException {
if (type instanceof Class) {
Class t = (Class) type;
writer.write(t.getName());
} else if (type instanceof TypeVariable) {
TypeVariable t = (TypeVariable) type;
writer.write(t.getName());
printTypes(t.getBounds(), " extends ", ",", "");
} else if (type instanceof WildcardType) {
WildcardType t = (WildcardType) type;
writer.write("?");
printTypes(t.getLowerBounds(), " extends ", " & ", "");
printTypes(t.getUpperBounds(), " super ", " & ", "");
} else if (type instanceof ParameterizedType) {
ParameterizedType t = (ParameterizedType) type;
Type owner = t.getOwnerType();
if (owner != null) {
printType(owner);
writer.write(".");
}
printType(t.getRawType());
printTypes(t.getActualTypeArguments(), "</span><span>",
"</span><span class=\"string\">",
"</span><span>, </span><span class=\"string\">");
} else if (type instanceof GenericArrayType) {
GenericArrayType t = (GenericArrayType) type;
printType(t.getGenericComponentType());
writer.write("[]");
}
}
}
分享到:
相关推荐
《分布式系统原理与范型--(第二版)》复习资料。用于课堂学习,期末复习
DecalSDL-Delphi的范型类库-通用数据结构与算法类库(一).pdf
消息传递范型与C/S范型双范型的主数据管理机制,陈晓云,邢乔金,本文针对主数据管理(MDM)存在的问题提出了一种基于消息传递机制范型与C/S范型双范型的主数据管理机制,当各个分系统的数据有所变化�
华中科技大学 分布式系统原理与范型_考试_2009_答案
分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版) 分布式系统-原理与范型(第2版)
第2~9章讨论的是分布式系统的的原理、概念和技术,包括通信、进程、命名、同步化、一致性和复制、容错性以及安全性等,而分布式应用的开发方法(即范型)在第10~13章中进行了讨论。但是,与前一版不同的是,我们...
C++多范型设计,ISBN:9787508318240,作者:(美)James O.Coplien著;鄢爱兰,周辉等译;鄢爱兰译
《分布式系统原理与范型》是分布式系统中的经典教材,全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了...
分布式系统原理与范型(第二版)第五章命名系统的PPT英文版
分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案
Java 范型Java 范型
范型程序设计与 STL.pdf,大小约 300K。
《分布式系统原理与范型》第一版.中文版,影印版。
java1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.doc
全书涵盖了这样一些重要的概念或方法,需要读者重点把握:软件族、共同性、积极或消极差异性、领域分析、领域划分、领域词汇表、面向对象的分析、复用、迭代、绑定、依赖关系图、范型混合,以及模式等。 本书第1章...
是《分布式系统原理与范型(第二版)》的答案 上回写错了,易造成误解! 本文档是第二版书的答案哦! 绝对是新的哦! 英文的!
《七周七语言:理解多种编程范型》共介绍了七种不同的编程语言。对于每种语言,分别介绍了各自的特性、应用,以及编程入门知识和关键编程范型,还带领读者使用能够代表该语言最重要特性的技术,解决某个不寻常的问题...
详细介绍分布式原理和基本范型, 是一部不可多得的分布式经典书籍。
分布式系统原理与范型.pdf tanenbaum的早期操作系统著作
C++多范型设计.pdfC++多范型设计.pdfC++多范型设计.pdf