`
meiyoudao
  • 浏览: 89705 次
  • 性别: Icon_minigender_1
  • 来自: 冲脉
社区版块
存档分类
最新评论

反射基础

阅读更多
反射就是把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材质反射基础.pdf

    《VR材质反射基础》 在虚拟现实(VR)和3D渲染领域,材质的反射是决定场景真实感的重要因素之一。本教程将详细介绍如何在VR环境中设置和调整材质的反射属性,以创建逼真的视觉效果。 首先,我们需要设置渲染参数。...

    VR材质反射基础.docx

    本文将深入探讨VR材质的反射基础,以及如何通过一系列步骤来设置和优化反射效果。 首先,我们要理解VR材质中的全局开关(Global switches)。"Default lights"选项控制是否使用场景中的默认灯光。关闭这个选项意味...

    光的反射基础资料知识讲解.doc

    【光的反射基础资料知识讲解】 光的反射是光学领域中的基本现象,指的是光线射向物体表面时,一部分光线被物体表面反射回原来的空间。这一现象涉及到一系列关键概念和定律,对于理解和应用光学原理至关重要。 **...

    【IT十八掌徐培成】Java基础第25天-01.反射基础.zip

    反射基础”这一课程中,徐培成老师会深入讲解这个核心概念。 反射的基石是`java.lang.Class`类,它代表了Java运行时的类型信息。通过`Class`对象,我们可以获取类的构造器、方法、字段等信息,甚至可以在运行时动态...

    C#反射基础学习

    这篇学习笔记将带你深入了解C#反射的基础知识,帮助你掌握这一关键技能。 1. **程序集(Assembly)**:程序集是.NET应用程序的基本部署和版本控制单位,包含了元数据和IL(中间语言)代码。你可以通过`System....

    反射基础思维导图

    内含反射的定义,反射的价值,,反射使用的方法以及xml文件的定义,价值,特点详解

    新手学习java反射基础

    Java 反射基础知识点 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。下面我们来一起学习一下吧。 一、...

    Java反射基础入门,一篇就够啦

    Java反射基础入门 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。本文将详细介绍Java反射的基础知识,包括反射的基本概念、工作原理、使用方法及优缺点。...

    java反射笔记

    关于标签"反射基础",在Java反射基础中,还包括了泛型信息的获取、接口实现类的判断、注解的处理等内容: 1. 泛型信息:虽然Java泛型在编译后会被擦除,但通过反射仍可以获取到泛型的实际类型。 2. 接口实现:`Class...

    Java基础 反射篇.md

    ### 反射基础篇文末总结 反射是Java中一个非常强大的特性,它提供了运行时操作类的能力。虽然反射可以带来很多便利,但也需要注意其潜在的问题,合理地使用反射,可以使我们的代码更加灵活和高效。在实际开发中,...

    光的反射(基础)巩固练习.doc

    【光的反射基础巩固练习】 光的反射是光学的基本概念,涉及到光线与物体表面相互作用时的角度关系。在光的反射中,有以下几个关键知识点: 1. 入射角:光线与法线(垂直于反射面的直线)之间的角度称为入射角。 2....

    Java反射性能测试分析

    #### Java反射基础 Java反射主要依赖于以下几类API: - `java.lang.Class`: 提供了获取类信息的方法。 - `java.lang.reflect.Field`: 允许访问和修改类的字段。 - `java.lang.reflect.Method`: 用于调用类的方法。 ...

    JAVA反射详细讲解

    一、反射基础 1. 类与对象的元数据:在Java中,每个类都由Class对象表示,这个对象包含了关于类的所有信息,如类名、构造器、方法、字段等。通过Class类,我们可以获取到运行时的类信息。 2. 获取Class对象:有三...

    C#,利用反射动态创建对象

    1. **反射基础** 反射是.NET框架提供的一种特性,通过System.Reflection命名空间中的类来实现。主要类包括Assembly(程序集)、Type(类型)、ConstructorInfo(构造函数信息)、MethodInfo(方法信息)和...

    php 反射简单例子

    1. PHP反射基础 反射API是PHP内建的一组类,它提供了对类、接口、函数、方法和常量等对象的元数据访问。这些类包括`\ReflectionClass`、`\ReflectionFunction`、`\ReflectionMethod`等,它们分别用于获取关于类、...

    《剑指offer》Java基础-反射篇.pdf

    变化,需要更换不同的类实例化,频繁修改源...• 反射基础篇中,通常会涵盖上述内容,并在文末进行总结,帮助读者理解和掌握反射的核心概念和使用技巧。在面试或深入学习开源框架时,对反射的理解和运用是非常重要的。

    实战java反射机制-让你迅速认识java强大的反射机制

    1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`Class`对象代表了运行时的类信息,通过`Class.forName()`方法可以获取到类的`Class`对象。此外,`java.lang.reflect...

    C#反射生成SQL实例

    1. **反射基础**:C#中的System.Reflection命名空间包含了所有与反射相关的类。其中,Type类是反射的核心,它可以表示任何.NET类型。通过Assembly.Load或typeof运算符可以获取Type对象。 2. **PropertyInfo和...

    Java基础精品课22-xml与反射.zip

    5. 反射基础:理解反射的概念,学习Class类和反射API的使用。 6. 动态方法调用:使用Method类调用类的方法,包括静态方法和实例方法。 7. 访问私有字段:通过反射访问和修改私有字段的值。 8. 反射与设计模式:如...

Global site tag (gtag.js) - Google Analytics