本文主要罗列了Java反射中使用比较多的一些方法,主要都是来自 java.lang.reflect包下的Field、Method 和 Constructor 等三个类,希望对大家有帮助!!

介绍

java反射库(reflection library) 提供了一个非常丰富且精心设计的工具集, 以便编写能够动 态操纵 Java 代码的程序。这项功能被大量地应用于 JavaBeans 中。使用反射, Java 可以支持 Visual Basic 用户习惯 使用的工具,特别是在设计或运行中添加新类时, 能够快速地应用开发工具动态地查询新添加类的能力。

反射的作用

1.在运行时分析类的能力;

2.在运行时查看对象;

3.实现通用的数组操作代码;

4.利用 Method 对象, 这个对象很像中的函数指针。

Java反射中常用技术

1.动态获取类,例如:根据一个字符串获取该类

String name="xxxxxxxxxxxx";  Class c1 = name.getClass();
System.out.println(c1.getName());

2.动态验证类是否存在与合法性,例如:比如上面获取的java.lang.String类名

String name = "java.lang.String";
Class c1 = null;
try {
   c1 = Class.forName(name);
   System.out.println(c1.getName());
} catch (ClassNotFoundException e) {
}

注:我们也可以通过c1.getSuperclass()获取到它的父类

3.获取类的成员

3.1.属性

a.            getDeclaredFields

b.            getDeclaredField(参数类型.class,....)

3.2.方法

a.获取所有方法

获取方法的返回值类型

获取方法的传入参数类型

获取指定的方法

"参数类型<span ui",sans-serif;color:#212529;background:="" white'="">.class,...."                public Constructor[] getDeclaredConstructors获取单个指定构造器

Test带参数的构造器

public Test(int age , String name){    this.age = age;
   his.name = name;
   System.out.println("hello" + name + "i am" + age);
}

使用newInstance方法调用构造器

Class[] p = {int.class,String.class};
constructors = c4.getDeclaredConstructor(p);
constructors.newInstance(24,"HuangLinqing");

Java反射库介绍的更多相关文章

  1. Android下HelloWorld项目的R.java文件介绍

    R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R {     public s ...

  2. 深入Java虚拟机读书笔记第一章Java体系结构介绍

    第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...

  3. java集合介绍(List,Set,Map)

    前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...

  4. Java学习介绍

    Java版本介绍 JavaME:微型版,用于开发小型设备.智能卡.移动终端应用(使用率较低) JavaSE:标准版,用于创建桌面应用(企业用JavaSE创建桌面应用较少) JavaEE:企业版,用于创 ...

  5. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  6. Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试【转】

    Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总 ...

  7. java JNI介绍

    java JNI介绍 目录 java JNI介绍 1. Java调用C++代码 2.C++代码调用java代码 JNI是Java Native Interface的全称. oracle文档中是这样描述 ...

  8. Java秘诀!Java逻辑运算符介绍

    运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的. Java 语言中的运算符除了具有优先级之外,还有结合性的特点.当一个表达式中出现多种运算符时,执行的先后顺序 ...

  9. Java秘诀!Java赋值运算符介绍

    运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的. Java 语言中的运算符除了具有优先级之外,还有结合性的特点.当一个表达式中出现多种运算符时,执行的先后顺序 ...

随机推荐

  1. C#算法设计排序篇之11-二叉树排序(附带动画演示程序)

    二叉树排序(Binary Tree Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/695 访问. 二叉树排序 ...

  2. JavaScript Object初始化的不同方式

    不带原型的对象,纯对象 const plaintObject = Object.create(null) 带原型的对象 const originObject = new Object()

  3. 文件上传控件bootstrap-fileinput中文设置没有效果的情况

    1.引入zh.js顺序错误 zh.js需放到fileinput.js下面 2. 组件创建语法错误 (class=“file”) 如果你使用js初始化fileinput组件,那么在html元素中应删除 ...

  4. Python Unofficial Windows Binary

    python一些安装包有时候在windows下无法 直接安装. 可以在一个非官方的Python Windows扩展库里面找到对应的打包好的whl,下载后直接安装. https://www.lfd.uc ...

  5. gcc手动安装

    Linux下: 手动安装gcc需要5个基础包 百度网盘链接:链接:包链接 密码:izxj 按照以上顺序安装:rpm -ivh 包名   为什么要手动安装呢,因为遇到这个情况:linux服务器没有权限连 ...

  6. IP-master

    http://www.igotaobao.cn/IP-master/

  7. linux 解压与压缩

    转http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:tar cv ...

  8. Vue中keep-alive组件的理解

    对keep-alive组件的理解 当在组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例, ...

  9. 第七天Scrum冲刺博客

    1.会议照片 2.项目进展 团队成员 昨日计划任务 今日计划任务 梁天龙  学习课程页面  建议页面 黄岳康  定义个人课程  登陆页面 吴哲翰  完成页面的与后端的沟通交流  继续保持确认功能齐全 ...

  10. Vue的Options

    el:挂载点 与$mount有替换关系 new Vue({ el: "#app" }); new Vue({}).$mount('#app') 注:被你选为挂载点的那个元素,如果在 ...