Java反射API使用实例
/**
* 访问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使用实例的更多相关文章
- Java反射API研究(1)——注解Annotation
注解在表面上的意思,只是标记一下这一部分,最好的注解就是代码自身.而在java上,由于注解的特殊性,可以通过反射API获取,这种特性使得注解被广泛应用于各大框架,用于配置内容,代替xml文件配置. 要 ...
- java反射机制简单实例
目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...
- java 反射机制的实例
[案例1]通过一个对象获得完整的包名和类名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect; /** * 通过一个对象获得完整的包名和类名 ...
- Java反射API研究(3)——java.lang.Class<T>
对于反射来说,Class是核心,任何反射的对象都需要通过Class来获得. Class 类的实例表示正在运行的 Java 应用程序中的类和接口.枚举是一种类,注释是一种接口.每个数组属于被映射为 Cl ...
- Java反射API研究(2)——java.lang.reflect详细内容与关系
对于最新的java1.8而言,reflect中接口的结构是这样的: java.lang.reflect.AnnotatedElement java.lang.reflect.AnnotatedType ...
- Java反射API研究(4)——Class中的重要对象
一.Constructor与Method的父类:Executable Executable表示一个可执行类,构造方法与普通方法都是Executable AnnotatedType[] getAnnot ...
- Java反射api详解
虽然已经用了很多反射相关的api,但是还没有详细研究官方api文档,下面以1.6为基础研究一下api文档(因为只找到了1.6的中文版...),同时补充1.7和1.8对反射相关api的改变.
- java反射API
反射主要对象 Class Constructor Field Method API-Class 获取Class对象 Object.getClass() className.class Class.fo ...
- java反射机制-简单实例
public class Car { private String brand; private String color; private int maxSpeed; public Car() { ...
随机推荐
- OpenCV中的神器Image Watch
Image Watch是在VS2012上使用的一款OpenCV工具,能够实时显示图像和矩阵Mat的内容,跟Matlab很像,方便程序调试,相当好用.跟VS2012配合使用,简直就是一款神器!让我一下就 ...
- Nodejs进阶:核心模块https 之 如何优雅的访问12306
本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 模块概览 这个模块的重要性,基本不用强调了.在网络安全问题日益严 ...
- 什么是viewport,为什么需要viewport
viewport:视口,视觉窗口,显示区域.在显示面积上手机屏幕相对桌面显示器要小很多,在几年前(现在也如此)大部分网站都是为桌面显示器浏览而设计,很少考虑到适应手机屏幕,所以如果用手机浏览大多网站时 ...
- spring MVC学习笔记
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...
- Beta版本冲刺Day3
会议讨论: 628:已经将原本写在jsp中的所有界面修饰代码转移到了css文件中,同时当页面跳转的时候也不会出现崩溃的现象,并且已经解决了上次无法连接数据库的问题.但是又遇到了一些新的小问题,希望明天 ...
- springMvc全局异常处理
本文中只测试了:实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器 对已有代码没有入侵性等优点,同时,在异常处理时能获取导致出现异常的对象,有利于提 ...
- ASP.NET中实现Session的负载均衡
据我目前所知有2种方法,如下: 1.利用微软提供的解决方案 参考网址:http://blog.maartenballiauw.be/post/2008/01/23/ASPNET-Session-Sta ...
- Java--笔记(4)
31.中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源.中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯.是连接两个独立应用程序或独立系统的软 ...
- 计算机网络-TCP连接
TCP首部20个字节 1.为什么TCP要三次握手建立连接? TCP连接过程,客户端发送请求到服务器,服务器确认请求发送到客户端,客户端再发送确认请求到服务器 原因:简言之,为了防止失效的连接请求发送到 ...
- To IOC,代码结构演变的随想
代码结构演变 项目开始阶段 需求: 提供一个系统,可以在新春佳节之际以邮件的形式给员工发送新春祝福. 开发人员: 张三 版本一 string msg = "新年快乐!过节费5000.&quo ...