反射 API基本代码测试
ReflectBean.java
package com.xiaojian.basics.reflect; /**
* 使用反射的测试类
*/ public class ReflectBean { // field
public String name;
private int age;
protected char gender; // constructor
public ReflectBean() {
this.name = "无参";
this.age = 1;
this.gender = '男';
} public ReflectBean(String name,Integer age){
this.name = name;
this.age = age;
} // method
protected String getInfo(){ String info = "这个" + this.gender + "人的名字是" + this.name ;
return info;
} private int getAge(){
return this.age;
} @Override
public String toString() {
return "ReflectBean{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
'}';
}
}
Test.java
package com.xiaojian.basics.reflect; import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; /**
* 反射
*/
public class Test {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
Class clazz = Class.forName("com.xiaojian.basics.reflect.ReflectBean"); // getFields()获取属性:只能获取public访问权限的
Field[] fields = clazz.getFields();
// getMethods()获取所有显性方法:只能获取public访问权限的
Method[] methods = clazz.getMethods();
// 获取所有显性构造器
Constructor[] constructors = clazz.getConstructors();
// 创建空构造函数对象
ReflectBean bean1 = (ReflectBean) clazz.newInstance();
System.out.println("***************无参构造函数***********************");
System.out.println(bean1.getInfo()); // 创建有参数构造函数
Constructor constructor = clazz.getConstructor(String.class,Integer.class);
ReflectBean bean2 = (ReflectBean)constructor.newInstance("小华",125);
System.out.println("***************有参构造函数***********************");
System.out.println(bean2.toString()); // 输出所有显性属性名称
System.out.println("***************属性名称***********************");
for(Field field : fields){
System.out.println(field.getName());
}
// 输出所有显性方法名称
System.out.println("***************方法名称************************");
for(Method method : methods){
System.out.println(method.getName());
}
System.out.println("///////////////////////////////////////////////////////////////////////////////////////////////// "); // getDeclaredFields()获取所有属性
Field[] declaredFields = clazz.getDeclaredFields();
// getDeclaredMethods()获取所有方法
Method[] decalredMethods = clazz.getDeclaredMethods(); // 输出所有属性名称
System.out.println("***************所有属性名称***********************");
for(Field field : declaredFields){
System.out.println(field.getName());
}
// 输出所有方法名称
System.out.println("***************所有方法名称************************");
for(Method method : decalredMethods){
System.out.println(method.getName());
} } }
反射 API基本代码测试的更多相关文章
- PHP反射API
近期忙着写项目,没有学习什么特别新的东西,所以好长时间没有更新博客.我们的项目用的是lumen,是基于laravel的一个轻量级框架,我看到里面用到了一些反射API机制来帮助动态加载需要的类.判断方法 ...
- 详解PHP反射API
PHP中的反射API就像Java中的java.lang.reflect包一样.它由一系列可以分析属性.方法和类的内置类组成.它在某些方面和对象函数相似,比如get_class_vars(),但是更加灵 ...
- JDK1.7新特性(4):java语言动态性之反射API
直接通过一个代码示例来熟悉java中通过反射来对构造函数/域以及方法处理的相关API: package com.rampage.jdk7.chapter2; import java.lang.refl ...
- PHP反射API (转)
http://www.cnblogs.com/zyf-zhaoyafei/p/4922893.html 近期忙着写项目,没有学习什么特别新的东西,所以好长时间没有更新博客.我们的项目用的是lumen, ...
- PHP 高级编程(2/5) - 反射API
PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 此外,反射 API 提供了方法来取出函数.类和方法中的文档注释.通过使用反射API可以分析其他的类.接口.方 ...
- 了解一下OOP的反射API
PHP5的类和对象函数并没有告诉我们类内部的所有一切,而只是报告了它们的公共成员.要充分了解一个类,需要知道其私有成员和保护成员,还要知道其方法所期望的参数 .对此,使用反射API. 1 查看自定义类 ...
- 反射——反射API,使用反射创建数组
反射API Java.lang.Reflect库 ① Class类与Java.lang.Reflect类库一起对反射的概念进行支持. ② java.lang包下: a) Cla ...
- Java学习笔记--反射API
反射API 1.反射API的介绍 通过反射API可以获取Java程序在运行时刻的内部结构.比如Java类中包含的构造方法.域和方法等元素,并可以与这些元素进行交换. 按照 一般地面向对象的设计 ...
- 《软件测试自动化之道》读书笔记 之 基于反射的UI测试
<软件测试自动化之道>读书笔记 之 基于反射的UI测试 2014-09-24 测试自动化程序的任务待测程序测试程序 启动待测程序 设置窗体的属性 获取窗体的属性 设置控件的属性 ...
随机推荐
- 因为 Java 和 Php 在获取客户端 cookie 方式不同引发的 bug
遇到个 Java 和 Php 在获取客户端 cookie 方式不同导致跨系统的问题.所以写了这篇博客梳理下相关知识. 实验 下面通过两个简单的实验,来看Java和Php在获取web请求中的cookie ...
- px em rem %作为单位使用
博客地址 :https://www.cnblogs.com/sandraryan/ px 我们都很熟悉啦,但是固定大小无法适配各种屏幕. rem是CSS3新增的一个相对单位(root em,根em), ...
- HDU 2844 混合背包、
题意:一个人想买手表,给你n个价值的硬币,然后给你n个价值硬币对应的个数.但是呢,这个人只知道这个手表的价格不超过m元.问他最多能买多少种价值的手表 思路:dp背包专题 但是- - 一直不知道该怎么d ...
- 洛谷P3150 pb的游戏(1)题解 博弈论入门
题目链接:https://www.luogu.org/problem/P3150 这道题目是博弈论的入门题. 我们以 必胜态 和 必败态 来讲解这个问题. 首先,下面的图片演示了前8个数的必胜态和必败 ...
- Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 题解 最小生成树
题目链接:https://codeforces.com/contest/1245/problem/D 题目大意: 平面上有n座城市,第i座城市的坐标是 \(x[i], y[i]\) , 你现在要给n城 ...
- 怎样判断一个jquery对象是否为空jquery对象
if ( $('#myDiv').length ){} http://stackoverflow.com/questions/47... 也可以直接判断$('#myDiv')[0]===undefin ...
- Python--day46--上节内容回顾及补充
1,union(把两张表连起来,以上下的方式):具有自动去重的功能,有相同的就去掉. 结果: 2,union all就没有去重的功能 3,临时表,指定映射,条件,三元运算
- mac默认截图、截图代码
苹果系统自带截图功能 1 截取全屏:快捷键(Shift+Command+3) 直接按“Shift+Command+3“快捷键组合,即可截取电脑全屏,图片自动保存在桌面. 2 截图窗口:快捷键(Sh ...
- git update-index --assume-unchanged
有的时候,不小心提交了一个配置文件config.php,每次在本地开发测试之后,都需要更改配置文件.相当麻烦. 使用 git update-index --assume-unchanged /pa ...
- 【49.23%】【hdu 1828】Picture
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...