/**
     * 访问Class对应的类所包含的注释:getAnnotation();getDelaredAnnotation();
     * 访问Class对应的类所包含的内部类:getDeclaredClasses()
     * 访问Class对应的类所包含的外部类getDeclaringClass()
     * 访问Class对应的类所继承的父类和实现的接口等:
     * getModifiers()返回此类或接口的所有修饰符
     * Class[] getInterfaces() 返回该Class对象对应类所实现的全部接口
     * getPackage();获取此类的包
     * getName();以字符串形式返回此Class对象所表示的类的名称
     * getSimpleName()以字符串形式返回此Class对象所表示类的简称
     * getSuperclass()返回该Class所表示的类的超类对应的Class对象
     */

ReflectDemo.java

package com.pb.reflect.classinfo;
/**
*
* @author Administrator
* 1、包
* 2、注解
* 3、构造方法
* 4、方法
* 5、内部类
*
*/
@SuppressWarnings(value="unchecked")
@Deprecated
public class ReflectDemo {
//私有构造方法
private ReflectDemo(){ }
//公有的带name参数的构造方法
public ReflectDemo(String name){ }
public void info(){ }
public void info(String str){ }
class inner{ }
}

TestReflectDemo.java

package com.pb.reflect.classinfo;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method; public class TestReflectDemo {
public static void main(String[] args) {
//下面的代码可以获取ReflectDemo的Class对象
Class<ReflectDemo> class1 = ReflectDemo.class;
//获取ReflectDemo中全部的构造方法
Constructor[] constructor = class1.getDeclaredConstructors();
System.out.println("########ReflectDemo全部的构造方法########");
for (Constructor constructor2 : constructor) {
System.out.println(constructor2.toString());
}
//获取ReflectDemo的public构造方法
System.out.println("########ReflectDemo公共的构造方法########");
Constructor[] constructor1=class1.getConstructors();
for (Constructor constructor2 : constructor1) {
System.out.println(constructor2.toString());
}
//获取ReflectDemo的public 的方法
System.out.println("########ReflectDemo公共的方法########");
Method[] methods=class1.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.toString());
}
//获取对应类的指定方法,方法名、方法参数的类型,找到info方法,info带的参数类型是String
try {
System.out.println("########ReflectDemo带有String类型参数的info方法########");
Method method=class1.getMethod("info", String.class);
System.out.println(method.toString());
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 获取ReflectDemo的全部注释
Annotation[] annotation=class1.getAnnotations();
System.out.println("########ReflectDemo所有的注释 信息#####");
for (Annotation annotation2 : annotation) {
System.out.println(annotation.toString());
}
//获取ReflectDemo的包信息
Package package1 = class1.getPackage();
System.out.println(package1.toString()); // 获取ReflectDemo的内部类
Class[] inners = class1.getDeclaredClasses();
System.out.println("########ReflectDemo所有的内部类#####");
for (Class class2 : inners) {
System.out.println(class2.toString());
} try {
Class inclass = Class.forName("com.pb.reflect.classinfo.ReflectDemo$inner");
// 输出内部类的信息
System.out.println("########ReflectDemo所有的内部类的信息");
System.out.println("inclass对应类的外部类为:"+inclass.getDeclaringClass());
System.out.println("inclass对应类的包为:"+inclass.getPackage());
System.out.println("inclass对应类的父类为:"+inclass.getSuperclass());
System.out.println("inclass对应类的名称为:"+inclass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
}

Java反射API使用实例的更多相关文章

  1. Java反射API研究(1)——注解Annotation

    注解在表面上的意思,只是标记一下这一部分,最好的注解就是代码自身.而在java上,由于注解的特殊性,可以通过反射API获取,这种特性使得注解被广泛应用于各大框架,用于配置内容,代替xml文件配置. 要 ...

  2. java反射机制简单实例

    目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...

  3. java 反射机制的实例

    [案例1]通过一个对象获得完整的包名和类名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect;   /**  * 通过一个对象获得完整的包名和类名 ...

  4. Java反射API研究(3)——java.lang.Class<T>

    对于反射来说,Class是核心,任何反射的对象都需要通过Class来获得. Class 类的实例表示正在运行的 Java 应用程序中的类和接口.枚举是一种类,注释是一种接口.每个数组属于被映射为 Cl ...

  5. Java反射API研究(2)——java.lang.reflect详细内容与关系

    对于最新的java1.8而言,reflect中接口的结构是这样的: java.lang.reflect.AnnotatedElement java.lang.reflect.AnnotatedType ...

  6. Java反射API研究(4)——Class中的重要对象

    一.Constructor与Method的父类:Executable Executable表示一个可执行类,构造方法与普通方法都是Executable AnnotatedType[] getAnnot ...

  7. Java反射api详解

    虽然已经用了很多反射相关的api,但是还没有详细研究官方api文档,下面以1.6为基础研究一下api文档(因为只找到了1.6的中文版...),同时补充1.7和1.8对反射相关api的改变.

  8. java反射API

    反射主要对象 Class Constructor Field Method API-Class 获取Class对象 Object.getClass() className.class Class.fo ...

  9. java反射机制-简单实例

    public class Car { private String brand; private String color; private int maxSpeed; public Car() { ...

随机推荐

  1. 开源--豆瓣小组UWP,已上架应用商店

    1.前言 豆瓣小组是我和我老婆都比较喜欢的豆瓣家族里面的一款产品.平时加入了一些小组,偶尔打开看下新鲜的帖子,可以打发一下无聊的时间. 豆瓣小组UWP是我前几周在家里开发的一款windows 10应用 ...

  2. ASP.NET MVC运行机制源码剖析

    我们都知道ASP.NET首先是从Global.aspx中开始运行的, 在Application_Start()中添加路由映射后, 就由URLRouting组件创建IRouteHandler并执行, 在 ...

  3. PHP 实现页面静态化

    PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...

  4. ModernUI教程:目录 (完结)

    入门 My first Modern UI app (manually)                         第一个ModernUI应用(手动编写)(已完成) My first Moder ...

  5. 基于FPGA的电压表与串口通信(下)

    实验操作 上电 接入5V电源,用配套的线,USB那端接电脑即可: 电源开关 按下电源开关 接串口线 接下载线 现在电脑装串口线驱动 R340qd.zip 双击进行安装 设置串口调试助手 Com1要根据 ...

  6. [Codevs 1421]秋静叶&秋穣子(最大-最小博弈)

    题目:http://codevs.cn/problem/1421/ 分析:有向树上的最大-最小博弈 先手与后手的策略不同: 先手A:让对方取得尽量少的前提下,自己取得尽量大 后手B:让自己取得尽量多的 ...

  7. 同态加密-Homomorphic encryption

    同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样.换言之,这项技术令人 ...

  8. IE6下margin时,float浮动产生双倍边距

    今天遇到了一个IE6下的兼容性问题,虽然IE6已经不被大众所期待了,用户也已基本上消失的所剩无几,但是,作为一个问题而存在,我们有必要尝试的去研究一下bug的改善方法 对元素float-left,然后 ...

  9. extJs学习基础5 理解mvvm的一个小案例

    今天很是幸运,看到了一位大神的博客,学习了不少的东西.太感谢了.(满满的都是爱啊) 建议去学习这个大神的博客,真心不错. 博客地址:http://blog.csdn.net/column/detail ...

  10. HttpModule与HttpHandler详解

    ASP.NET对请求处理的过程:当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,A ...