定义:Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息。
反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值。

反射作用:使用Java反射机制可以在运行时期检查Java类的信息,检查Java类的信息往往是你在使用Java反射机制的时候所做的第一件事情,
通过获取类的信息你可以获取以下相关的内容

  Class对象
  类名
  修饰符
  包信息
  父类
  实现的接口
  构造器
  方法
  变量
  注解

Class对象:
反射获取class对象两种方式
Class.forName("类名全称");
forName是Class对象的静态方法,会装入类,并做类的静态初始化,返回Class的对象。

名.class;
JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象。

具体的参考如下代码:

Class<?> bean = Class.forName("com.*.common.ReflectBean");
ReflectBean reflectBean = (ReflectBean) bean.newInstance();
System.out.println("实例1" + reflectBean);
Class<?> bean1 = ReflectBean.class;
ReflectBean reflectBean1 = (ReflectBean) bean1.newInstance();
System.out.println("实例2" + reflectBean1);
int modifiers = bean.getModifiers();
System.out.println("类的修饰符" + modifiers);
System.out.println("类的修饰符是否为public" + Modifier.isPublic(modifiers));
System.out.println("类的全名" + bean.getName());
System.out.println("类的简名" + bean.getSimpleName());
Package packageInfo = bean.getPackage();
System.out.println("类的包信息" + packageInfo);
Class superClass = bean.getSuperclass();
System.out.println("类的父类" + superClass.getName());
for (Class interFace : bean.getInterfaces()) {
System.out.println("类的接口" + interFace.getName());
} for (Constructor interFace : bean.getConstructors()) {
System.out.println("类的构造方法" + interFace.getName());
} for (Method interFace : bean.getMethods()) {
System.out.println("类的方法" + interFace.getName());
} for (Field interFace : bean.getFields()) {
System.out.println("类的公共变量" + interFace.getName());
} for (Annotation annotation : bean.getAnnotations()) {
// 此处没注解是因为 setter getter 等都是编译时期的 这拿到的是运行期的
System.out.println("类的注解" + annotation.toString());
}
@Getter
@Setter
@ToString(callSuper = true)
@Lazy
public class ReflectBean extends ReflectBeanSuper implements ReflectInterface {
public String name; public ReflectBean () { } public ReflectBean (String name) {
this.name = name;
}
@Override
public String getReflectName() {
return name;
}
}
@Getter
@Setter
@ToString
public class ReflectBeanSuper {
private String sex;
}
public interface ReflectInterface {
String getReflectName();
}

运行结果如图:

这里写的比较简单,都在代码里体现了,如果需要具体的操作可以在参考相关API

Java反射拾遗的更多相关文章

  1. Java基础拾遗(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358523冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  2. Java基础拾遗(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358391冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  3. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  4. Java反射机制

    Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射:     静态编译:在编译时确定类型,绑定对象,即通过 ...

  5. java反射(基础了解)

    package cn.itcast_01; /** *Person类 */ public class Person {    /** 姓名 */    private String name;     ...

  6. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  7. java基础知识(十一)java反射机制(下)

    1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...

  8. java反射学习之二万能EXCEL导出

    一.EXCEL导出的实现过程 假设有一个对象的集合,现在需要将此集合内的所有对象导出到EXCEL中,对象有N个属性:那么我们实现的方式是这样的: 循环这个集合,在循环集合中某个对象的所有属性,将这个对 ...

  9. java反射学习之一反射机制概述

    一.反射机制背景概述 1.反射(reflection)是java被视为动态语言的一个关键性质 2.反射机制指的是程序在运行时能获取任何类的内部所有信息 二.反射机制实现功能概述 1.只要给定类的全名, ...

随机推荐

  1. Python web后端接收到的json数据有前端格式的布尔值 true false

    最近在后端处理前端传过来的json数据,发现,因为数据是各种数据格式的嵌套,使用json.loads(),无法将内层的数据转换为原来格式的数据,所以需要使用eval( )函数进行转换,但是如果数据含有 ...

  2. chrome下uploadify导致页面崩溃

    解决方法在初始化uploadify之前用timeout来延迟加载 $(function(){     setTimeout(function(){         $('#file_upload'). ...

  3. 【ROS系列】使用QT编写ROS订阅、发布程序

    Linux下一直使用QT进行开发,支持cmake使得很容易导入其他工程.学习ROS过程中,很多函数名称难记,使用QT不仅可以提示补全,还为了以后开发GUI方便吧. 1.安装ros_qtc_plugin ...

  4. hive与hbase的整合

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点学习成本低,可以通过类S ...

  5. android开发中的 Activity 与 Context 区别与联系

    Context 是 Application /Activity /Service的基类 Intent(Context , Class); Activity中的上下文Context是随着活动的产生而产生 ...

  6. SELECT列表中的标量子查询

    发现了一种表连接新的写法,以前还没有这样写过或者见别人写过.跟同学聊天他们公司却很多人这样写,看来真的要学学sql了 表 CREATE TABLE `t_book` ( `FId` ) NOT NUL ...

  7. Vue-router的基本使用

    Vue-router的基本使用 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. 《Mysql技术内幕,Innodb存储引擎》——事物

    事物 事物中的操作要么都成功要么都不做,这是事物的目的,也是事物模型与文件系统的重要特征之一. 扁平事物(Flat Transactions) 所有操作都处于同一层次,要么都做要么都执行要么都回滚,无 ...

  9. jquery插件开发的demo

    (function ($) { $.fn.extend({ "highLight": function (options) { //检测用户传进来的参数是否合法 if (!isVa ...

  10. Chapter 3 Phenomenon——5

    I saw several things simultaneously. 我同时看见了几件事情. Nothing was moving in slow motion,the way it does i ...