反射就是把Java类中的各种成分映射成相应的Java类.
Class 类代表Java类,它的各个实例对象又分别对应什么呢?
对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等.
一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的.
如何得到各个字节码对应的实例对象(Class类型)
类名.class 例如,System.class
对象.getClass(),例如 New Date().getClass()
Class.forName("类名"),例如,Class.forName("java.lang.String");
反射影响系统性能下降.因为反射需要把字节码放入缓存.反射越多,缓存占用量越大.
//获取本类的所有public构造方法
Constructor[] con = obj.getConstructors();
//获取本类所有的构造方法
//con = obj.getDeclaredConstructors();
System.out.println(con.length);
for(Constructor c : con){
System.out.println(c.getName());
}
// //获得所有的方法
// //获取public的方法,包括所有父类
// Method[] met = obj.getMethods();
// //获取本类的所有(public protected private)方法
// met = obj.getDeclaredMethods();
// System.out.println(met.length);
// for(Method m : met){
// System.out.println(m.getName());
// }
// //获得所有的属性
// //获得所有的public属性,包括所有父类
// Field[] fie = obj.getFields();
// //获取本类属性,不论private protected public 都能获取
// //fie = obj.getDeclaredFields();
// System.out.println(fie.length);
// for(Field f : fie){
// System.out.println(f);
// }
import java.lang.reflect.Method;
import java.lang.reflect.Type;
public class ReflectTest {
/**
* 〈出输反射的方法〉
* 〈功能详细描述〉
* @param args void
* 如果有违例,请使用@exception/throws [违例类型] [违例说明:异常的注释必须说明该异常的含义及什么条件下抛出该
* @see [类、类#方法、类#成员]
*/
public static void main(String[] args) {
try {
Class s = Class.forName("java.text.Format");
//获取public的方法,包括所有父类
//s.getMethods();
//获取本类的所有(public protected private)方法
Method[] meth = s.getDeclaredMethods();
int tt = 2;
for(int i=0; i<meth.length; i++){
//输出返回参数类型
System.out.print(meth[i].getGenericReturnType()+"\t");
//输出方法名
System.out.print(meth[i].getName()+"(");
Type[] types = meth[i].getGenericParameterTypes();
tt = 2;
for(int ta=0; ta<types.length;ta++){
//打印参数类型
System.out.print(types[ta]);
//判断是否为偶数个参数,为基数个
if(tt%2 != 0){
}else{
//如果为最后一个参数,忽略,号
if(ta < types.length-1){
System.out.print(",");
}
}
}
//输出参数最后的括号
System.out.println(")");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
《VR材质反射基础》 在虚拟现实(VR)和3D渲染领域,材质的反射是决定场景真实感的重要因素之一。本教程将详细介绍如何在VR环境中设置和调整材质的反射属性,以创建逼真的视觉效果。 首先,我们需要设置渲染参数。...
本文将深入探讨VR材质的反射基础,以及如何通过一系列步骤来设置和优化反射效果。 首先,我们要理解VR材质中的全局开关(Global switches)。"Default lights"选项控制是否使用场景中的默认灯光。关闭这个选项意味...
【光的反射基础资料知识讲解】 光的反射是光学领域中的基本现象,指的是光线射向物体表面时,一部分光线被物体表面反射回原来的空间。这一现象涉及到一系列关键概念和定律,对于理解和应用光学原理至关重要。 **...
反射基础”这一课程中,徐培成老师会深入讲解这个核心概念。 反射的基石是`java.lang.Class`类,它代表了Java运行时的类型信息。通过`Class`对象,我们可以获取类的构造器、方法、字段等信息,甚至可以在运行时动态...
这篇学习笔记将带你深入了解C#反射的基础知识,帮助你掌握这一关键技能。 1. **程序集(Assembly)**:程序集是.NET应用程序的基本部署和版本控制单位,包含了元数据和IL(中间语言)代码。你可以通过`System....
内含反射的定义,反射的价值,,反射使用的方法以及xml文件的定义,价值,特点详解
Java 反射基础知识点 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。下面我们来一起学习一下吧。 一、...
Java反射基础入门 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。本文将详细介绍Java反射的基础知识,包括反射的基本概念、工作原理、使用方法及优缺点。...
关于标签"反射基础",在Java反射基础中,还包括了泛型信息的获取、接口实现类的判断、注解的处理等内容: 1. 泛型信息:虽然Java泛型在编译后会被擦除,但通过反射仍可以获取到泛型的实际类型。 2. 接口实现:`Class...
### 反射基础篇文末总结 反射是Java中一个非常强大的特性,它提供了运行时操作类的能力。虽然反射可以带来很多便利,但也需要注意其潜在的问题,合理地使用反射,可以使我们的代码更加灵活和高效。在实际开发中,...
【光的反射基础巩固练习】 光的反射是光学的基本概念,涉及到光线与物体表面相互作用时的角度关系。在光的反射中,有以下几个关键知识点: 1. 入射角:光线与法线(垂直于反射面的直线)之间的角度称为入射角。 2....
#### Java反射基础 Java反射主要依赖于以下几类API: - `java.lang.Class`: 提供了获取类信息的方法。 - `java.lang.reflect.Field`: 允许访问和修改类的字段。 - `java.lang.reflect.Method`: 用于调用类的方法。 ...
一、反射基础 1. 类与对象的元数据:在Java中,每个类都由Class对象表示,这个对象包含了关于类的所有信息,如类名、构造器、方法、字段等。通过Class类,我们可以获取到运行时的类信息。 2. 获取Class对象:有三...
1. **反射基础** 反射是.NET框架提供的一种特性,通过System.Reflection命名空间中的类来实现。主要类包括Assembly(程序集)、Type(类型)、ConstructorInfo(构造函数信息)、MethodInfo(方法信息)和...
1. PHP反射基础 反射API是PHP内建的一组类,它提供了对类、接口、函数、方法和常量等对象的元数据访问。这些类包括`\ReflectionClass`、`\ReflectionFunction`、`\ReflectionMethod`等,它们分别用于获取关于类、...
变化,需要更换不同的类实例化,频繁修改源...• 反射基础篇中,通常会涵盖上述内容,并在文末进行总结,帮助读者理解和掌握反射的核心概念和使用技巧。在面试或深入学习开源框架时,对反射的理解和运用是非常重要的。
1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`Class`对象代表了运行时的类信息,通过`Class.forName()`方法可以获取到类的`Class`对象。此外,`java.lang.reflect...
1. **反射基础**:C#中的System.Reflection命名空间包含了所有与反射相关的类。其中,Type类是反射的核心,它可以表示任何.NET类型。通过Assembly.Load或typeof运算符可以获取Type对象。 2. **PropertyInfo和...
5. 反射基础:理解反射的概念,学习Class类和反射API的使用。 6. 动态方法调用:使用Method类调用类的方法,包括静态方法和实例方法。 7. 访问私有字段:通过反射访问和修改私有字段的值。 8. 反射与设计模式:如...