当我使用内省时,我有以纯文本编写的类,方法和属性名称 . 就像在这个简短的演示:

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 内省 反射_如何使用反射/内省来维护程序?相关推荐

  1. java 重复代码优化_利用注解 + 反射消除重复代码(Java项目)

    1. 案例分析 1.1 案例场景 假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串 按照银行提供的API文档顺序,将所有的参数 ...

  2. java反射克隆对象_Java反射 - 2(对象复制,父类域,内省)

    为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...

  3. Java反射及 IoC原理、内省机制

    JAVA反射及IoC原理.JAVA内省 1. 反射 反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述 主要指程 ...

  4. java 内省机制_Java反射及 IoC原理、内省机制

    JAVA反射及IoC原理.JAVA内省 1. 反射反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述主要指程序可 ...

  5. 在java中为什么_属性绑定到类型_方法绑定到对象_13. Java基础之类型信息(RTTI和反射)...

    一. Java反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据"类的部分已经的信息"来还原"类的全部的信息".这里"类的部 ...

  6. java项目不要用反射_面试官:Java 反射是什么?我回答不上来!

    一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检 ...

  7. 如何理解java反射_如何理解java反射?

    一.反射基本概念 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产 ...

  8. java lambda 反射_反射调用与Lambda表达式调用

    想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用--至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...

  9. 深入理解 Java 反射:Class (反射的入口)

    深入理解 Java 反射系列: 深入理解 Java 反射:Class (反射的入口) 深入理解 Java 反射:Field (成员变量) 深入理解 Java 反射:Method (成员方法) 读完本文 ...

最新文章

  1. 错误:AttributeError: module 'enum' has no attribute 'IntFlag'
  2. QT实现太阳系系统八大行星
  3. MobX快速入门教程(重要概念讲解)
  4. vueJs的简单入门以及基础语法
  5. Portainer 安装与使用
  6. 238.除自身以外数组的乘积 (力扣leetcode) 博主可答疑该问题
  7. vi/vim编辑器常用命令
  8. 在线字符或文本转二进制工具
  9. 您需要 “企业内容管理“(ECM)还是 “文档管理系统”(DMS)?
  10. springboot基于微信小程序的宿舍管理系统毕业设计源码
  11. python编程课哪个机构最好,python培训比较好的机构
  12. 计算机知识在小学教学中的应用,计算机在小学教学中的应用
  13. 工业和信息化部教育与考试中心职业技术证书
  14. 计算机组成原理-哈工大刘宏伟(第一篇)
  15. elastic-search学习笔记
  16. python的时间转换datetime和pd.to_datetime
  17. fixture 'xxx' not found
  18. C语言中的void和void*的定义及用法
  19. win10下基于anaconda利用keras开展16系显卡GTX1650的GPU神经网络计算
  20. strchr函数的实现

热门文章

  1. 完美世界:笔试题(最小漂流船只数累计,主城之间的最小距离迪杰斯特拉)...
  2. windows10怎样关闭,开机启动项中不需要的应用?
  3. JAVA接口里面的变量
  4. 如何在github上发起一个pull request,如何贡献代码,参与开源项目
  5. [51NOD1126]求递推序列的第n项(矩阵快速幂)
  6. 【转】python 批量修改密码(paramiko)
  7. linux内核I2C体系结构(注意结构体原型)
  8. html输入字符长度佛下一句,js如何判断输入字符串长度
  9. 深入理解C语言系列之内存和地址的故事(虚拟内存分区、全局变量与静态变量、外部函数内部函数、选择性编译)
  10. python头文件库_跟老齐学Python之不要红头文件(1)