java 内省 反射_如何使用反射/内省来维护程序?
当我使用内省时,我有以纯文本编写的类,方法和属性名称 . 就像在这个简短的演示:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class SO {
public static void main(String[] args)
throws NoSuchMethodException, ClassNotFoundException,
InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchFieldException {
final Class> myClass = Class.forName("myClass");
final Constructor> defaultConstructor = myClass.getDeclaredConstructor();
final Object myInstance = defaultConstructor.newInstance();
final Method myMethod = myClass.getDeclaredMethod("myMethod");
myMethod.invoke(myInstance, "arg1", 3, true);
final Field myFied = myClass.getDeclaredField("myFied");
final Object value = myFied.get(myInstance);
}
}
由于没有对此代码进行编译检查,如果我的目标类/方法/字段/签名在代码库中发生了任何变化,它可能会在运行时中断 . 有时IDE可以在重构时提供帮助,但通常我们可能会错过更改并在运行时出现致命错误 .
你知道避免这种问题的方法吗?
注意:没有有用答案的任何'Avoid reflection whenever possible'都会得到-1 .
这不是一个威胁:我的问题不是'should I use introspection ?'而且我觉得答案纯粹是在污染这个问题 .
java 内省 反射_如何使用反射/内省来维护程序?相关推荐
- java 重复代码优化_利用注解 + 反射消除重复代码(Java项目)
1. 案例分析 1.1 案例场景 假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串 按照银行提供的API文档顺序,将所有的参数 ...
- java反射克隆对象_Java反射 - 2(对象复制,父类域,内省)
为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...
- Java反射及 IoC原理、内省机制
JAVA反射及IoC原理.JAVA内省 1. 反射 反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述 主要指程 ...
- java 内省机制_Java反射及 IoC原理、内省机制
JAVA反射及IoC原理.JAVA内省 1. 反射反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述主要指程序可 ...
- 在java中为什么_属性绑定到类型_方法绑定到对象_13. Java基础之类型信息(RTTI和反射)...
一. Java反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据"类的部分已经的信息"来还原"类的全部的信息".这里"类的部 ...
- java项目不要用反射_面试官:Java 反射是什么?我回答不上来!
一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检 ...
- 如何理解java反射_如何理解java反射?
一.反射基本概念 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产 ...
- java lambda 反射_反射调用与Lambda表达式调用
想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用--至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...
- 深入理解 Java 反射:Class (反射的入口)
深入理解 Java 反射系列: 深入理解 Java 反射:Class (反射的入口) 深入理解 Java 反射:Field (成员变量) 深入理解 Java 反射:Method (成员方法) 读完本文 ...
最新文章
- 错误:AttributeError: module 'enum' has no attribute 'IntFlag'
- QT实现太阳系系统八大行星
- MobX快速入门教程(重要概念讲解)
- vueJs的简单入门以及基础语法
- Portainer 安装与使用
- 238.除自身以外数组的乘积 (力扣leetcode) 博主可答疑该问题
- vi/vim编辑器常用命令
- 在线字符或文本转二进制工具
- 您需要 “企业内容管理“(ECM)还是 “文档管理系统”(DMS)?
- springboot基于微信小程序的宿舍管理系统毕业设计源码
- python编程课哪个机构最好,python培训比较好的机构
- 计算机知识在小学教学中的应用,计算机在小学教学中的应用
- 工业和信息化部教育与考试中心职业技术证书
- 计算机组成原理-哈工大刘宏伟(第一篇)
- elastic-search学习笔记
- python的时间转换datetime和pd.to_datetime
- fixture 'xxx' not found
- C语言中的void和void*的定义及用法
- win10下基于anaconda利用keras开展16系显卡GTX1650的GPU神经网络计算
- strchr函数的实现
热门文章
- 完美世界:笔试题(最小漂流船只数累计,主城之间的最小距离迪杰斯特拉)...
- windows10怎样关闭,开机启动项中不需要的应用?
- JAVA接口里面的变量
- 如何在github上发起一个pull request,如何贡献代码,参与开源项目
- [51NOD1126]求递推序列的第n项(矩阵快速幂)
- 【转】python 批量修改密码(paramiko)
- linux内核I2C体系结构(注意结构体原型)
- html输入字符长度佛下一句,js如何判断输入字符串长度
- 深入理解C语言系列之内存和地址的故事(虚拟内存分区、全局变量与静态变量、外部函数内部函数、选择性编译)
- python头文件库_跟老齐学Python之不要红头文件(1)