自己敲了好久啊
- import java.lang.annotation.Annotation;
- import java.lang.reflect.Modifier;
- import java.lang.reflect.Type;
- import java.lang.reflect.TypeVariable;
- public class ClassDeclarationViewer {
- public static void main(String[] args) throws ClassNotFoundException{
- //获得ArrayList类,其实我不太理解这个条语句什么意思
- Class<?>clazz=Class.forName("java.util.ArrayList");
- System.out.println("类的标准名称:"+clazz.getCanonicalName());
- System.out.println("类的修饰符:"+Modifier.toString(clazz.getModifiers()));
- //输出类的泛型参数
- TypeVariable<?>[] typeVariables=clazz.getTypeParameters();
- System.out.println("类的泛型参数是:");
- if(typeVariables.length!=0){
- for(TypeVariable<?>typeVariable:typeVariables){
- System.out.println(typeVariable+"\t");
- }
- }else{
- System.out.println("空");
- }
- //输出类所实现的所有接口
- Type[] interfaces=clazz.getGenericInterfaces();
- System.out.println("类所实现的接口");
- if(interfaces.length!=0){
- for(Type type:interfaces){
- System.out.println("\t"+type);
- }
- }else{
- System.out.println("\t"+"空");
- }
- //输出类的直接继承类,如果是继承自Object类就返回为空
- Type superClass=clazz.getGenericSuperclass();
- System.out.println("类的直接继承类:");
- if(superClass!=null){
- System.out.println(superClass);
- }else{
- System.out.println("空");
- }
- //输出类的所有注释消息,有些注释消息不能用反射获得的
- Annotation[] annotations=clazz.getAnnotations();
- System.out.println("类的注解:");
- if(annotations.length!=0){
- for(Annotation annotation:annotations){
- System.out.println("\t"+annotation);
- }
- }else{
- System.out.println("空");
- }
- }
- }
来源: https://www.oschina.net/code/snippet_2483810_58588