前段时间维护系统遇到的一个问题:在服务器上运行的程序有问题,本机却没问题。 查看服务器日志:set方法参数类型不匹配。 Debug后发现是在BeanUtil的set方法上出的问题。涉及java的反射应用,可能是反射对int等基本数据类型不是完全支持(但,在本机上问什么没问题呢?)。操作不了服务器,没做实际测试。 网上搜索了关于Java反射的一些知识。 Java反射机制是 Java 语言被视为准动态语言的关键性质。 J ava反射机制的核心就是允许在运行时通过 Java Reflection APIs 来取得已知名字的 class 类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为 private 的域或方法)。 因此,要想使用Java 反射,我们首先得到 Class 类的对象。下表列出了几种得到 Class 类的方法,以供大家参考。 Class object 诞生管道 示例 运用getClass() 注:每个class 都有此函数 String str = "abc"; Class c1 = str.getClass(); 运用 Class.getSuperclass() Button b = new Button(); Class c1 = b.getClass(); Class c2 = c1.getSuperclass(); 运用static method Class.forName() (最常被使用) Class c1 = Class.forName ("java.lang.String"); Class c2 = Class.forName ("java.awt.Button"); Class c3 = Class.forName ("java.util.LinkedList$Entry"); Class c4 = Class.forName ("I"); Class c5 = Class.forName ("[I"); 运用 .class 语法 Class c1 = String.class; Class c2 = java.awt.Button.class; Class c3 = Main.InnerClass.class; Class c4 = int.class; Class c5 = int[].class; 运用 primitive wrapper classes 的TYPE 语法 Class c1 = Boolean.TYPE; Class c2 = Byte.TYPE; Class c3 = Character.TYPE; Class c4 = Short.TYPE; Class c5 = Integer.TYPE; Class c6 = Long.TYPE; Class c7 = Float.TYPE; Class c8 = Double.TYPE; Class c9 = Void.TYPE; 获取一些基本信息 在我们得到一个类的Class 类对象之后, Java 反射机制就可以大施拳脚了。首先让我们来了解下如何获取关于某一个类的一些基本信息。 Java class 内部模块 Java class 内部模块说明 相应之Reflection API,多半为Class methods。 返回值类型(return type) package class隶属哪个package getPackage() Package import class导入哪些classes 无直接对应之API。 可间接获取。 modifier class(或methods, fields)的属性 int getModifiers() Modifier.toString(int) Modifier.isInterface(int) int String bool class name or interface name class/interface 名称getName() String type parameters 参数化类型的名称 getTypeParameters() TypeVariable [] base class base class(只可能一个) getSuperClass() Class implemented interfaces 实现有哪些interfaces getInterfaces() Class[] inner classes 内部classes getDeclaredClasses() Class[] outer class 如果我们观察的class 本身是inner classes,那么相对它就会有个outer class。 getDeclaringClass() Class 上表中,列出了一些Java class 内部信息的获取方式。所采用的方法几乎都是调用 Class 对象的成员方法(由此你就可以了解到 Class 类的用处了吧)。当然,表中所列出的信息并不是全部,有很大一部分没有列出,你可以通过查阅 Java 文档得到更全面的了解。另外,下面将重点介绍一下类的构造函数、域和成员方法的获取方式。
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
Java EE:Reflect 反射技术.docx
Java试题-5:应用反射创建对象,调用对象方法 反射为Java的高级技术应用
Java试题-3:反射和泛型的综合应用 Java反射 泛型都是比较高级的应用技术
java注解和反射的个人学习笔记
java学习例子 java java例子 java反射
JAVA基础--JAVA中的反射机制详解:本文档详细的介绍了Java的反射API的应用,希望能对各有所帮助
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。 所有文章均从网络途径获得,本人只作收集整理的工作,个别地方有改动。每篇文章的标题遵循原作者的表述,本人不再作任何更改。 关键字有:...
java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB
Java中的反射机制Java中的反射机制Java中的反射机制
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
Java异常处理机制 第8章 Java反射机制 第9章 数据结构与集合类 第3篇 图形用户界面 第10章 Java Swing(上) 第11章 Java Swing(下) 第12章 Applet网页小程序 第13章 图形编程 第14章 ...
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...
这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。...
Java反射案例,可以参考: Java反射机制 - 相关API:https://blog.csdn.net/niuba123456/article/details/85951088
java反射java反射java反射java反射java反射
Java反射技术的核心在于java.lang.reflect包,它提供了一系列类和接口,用于在运行时获取关于类和对象的信息,并进行相应的操作。主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的...
JAVA设计模式提高反射效率,Java代码精粹,高手实现,高效java代码,反射高效代码,绝对受益 JAVA设计模式提高反射效率,Java代码精粹,高手实现,高效java代码,反射高效代码,绝对受益 JAVA设计模式提高反射效率,...
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法