- 浏览: 88568 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
z694571598:
set 在哪?
js实现Set,Map,List,Queue -
coolboy09:
java并发编程实战上有类似的例子。我有一个疑惑,现在提出来和 ...
高速缓存实现 -
znlyj:
我同样关注,怎么更新缓存?另外,如果我不想将计算结果放到进程内 ...
高速缓存实现 -
Terry_zzz:
很好, 总结的很全面 谢谢!
深入浅出设计模式之单态模式(singleton) -
supertianyi:
好文,学习了
精通js中的Array
java的反射机制很重要,任何一个框架都要运用到反射,很多的操作也都是依靠反射来完成的,下面是我们在空余时间自己写的一点对于Java反射API的一些用法的小列子,虽然很简单,但是希望贴出来一起探讨:
Scanner scanner = new Scanner(System.in); String name = scanner.next(); System.out.println("当前的类是:"+name); try { Class<?> obj = Class.forName(name); Object stu = obj.newInstance(); /** * Field操作 * */ //获得该类下的所有属性(不包括父类) Field[] declareFields = obj.getDeclaredFields(); System.out.println("该类下(不包括父类)的所有参数...."); for (Field field : declareFields) { //访问private和protect时需要设置该属性为true,不然会报异常 field.setAccessible(true); System.out.println("属性名:"+field.getName()+" 修饰符:"+Modifier.toString(field.getModifiers()) + " 数据类型:" + field.getType()); Class<?> fieldType = field.getType(); //判定fielType的类型是不是String if (String.class.isAssignableFrom(fieldType)) { field.set(stu, "zhangsan"); System.out.println("方法名:" + field.getName() + "值:" + field.get(stu)); } //判定fielType类型是不是Integer if (Integer.class.isAssignableFrom(fieldType)) { field.set(stu, 1); System.out.println("方法名:" + field.getName() + "值:" + field.get(stu)); } System.out.println("GenericString : " + field.toGenericString()); System.out.println("Class :" + field.getDeclaringClass()); } System.out.println("----------------------------------------------"); //获得该类及其父类下所有public属性 Field[] fields = obj.getFields(); System.out.println("该类的所有public属性(包括其父类中的属性)"); for (Field field : fields) { System.out.println("描述符为public的属性名:"+field.getName()+" 修饰符:"+Modifier.toString(field.getModifiers()) + " 数据类型:" + field.getType()); } System.out.println("----------------------------------------------"); /** * Method操作 */ //获得该类下(不包括父类)的所有方法(包括private,protect,包控制权限,public) Method[] declareMethods = obj.getDeclaredMethods(); System.out.println("该类(不包括父类)的所有方法....."); for (Method method : declareMethods) { System.out.println("方法名:" + method.getName()+ "方法修饰符: "+ Modifier.toString(method.getModifiers())); System.out.println("方法返回值为:" + method.getReturnType() ); //获得该方法的所有参数的Class,如:参数String,获得的就是String.class对象 Class<?>[] paras = method.getParameterTypes(); System.out.println("该方法的参数如下:"); for (Class<?> para : paras) { System.out.println(para); } } System.out.println("----------------------------------------------"); //获得该类下及其父类的所有public方法 Method[] methods = obj.getMethods(); System.out.println("该类(包括父类)的所有方法....."); for (Method method : methods) { System.out.println("方法名:" + method.getName()+ "方法修饰符: "+ Modifier.toString(method.getModifiers())); System.out.println("方法返回值类型为:" + method.getReturnType() ); //获得该方法的所有参数的Class,如:参数String,获得的就是String.class对象 Class<?>[] paras = method.getParameterTypes(); System.out.println("该方法的参数如下:"); for (Class<?> para : paras) { System.out.println(para); } } System.out.println("----------------------------------------------"); /** * 构造函数操作 */ //获得该类下所有的构造函数 Constructor<?>[] constructors = obj.getDeclaredConstructors(); System.out.println("该类的所有构造函数....."); for (Constructor<?> constructor : constructors) { System.out.println("构造函数:" +constructor.getName()); System.out.println("该构造函数的修饰符:"+Modifier.toString(constructor.getModifiers())); Class<?>[] conTypes = constructor.getParameterTypes(); if (conTypes.length > 0) { for (Class<?> conType : conTypes) { System.out.println("构造函数的参数:" + conType); } } } System.out.println("----------------------------------------------"); //获得该类下所有的构造函数 Constructor<?>[] cons= obj.getConstructors(); System.out.println("该类的所有构造函数....."); for (Constructor<?> constructor : cons) { System.out.println("构造函数:" +constructor.getName()); System.out.println("该构造函数的修饰符:"+Modifier.toString(constructor.getModifiers())); Class<?>[] conTypes = constructor.getParameterTypes(); if (conTypes.length > 0) { for (Class<?> conType : conTypes) { System.out.println("构造函数的参数:" + conType); } } } System.out.println("----------------------------------------------"); /** * 获得该内的superClass */ Class<?> superClass = obj.getSuperclass(); System.out.println("该类的父类是:"+superClass.toString()); System.out.println("----------------------------------------------"); /** * 获得该类实现的接口 */ Class<?>[] interfaces = obj.getInterfaces(); if (interfaces.length > 0) { System.out.println("该类西线的接口如下:"); for (Class<?> inter : interfaces) { System.out.println("该接口为:" + inter.toString()); } } else { System.out.println("该类没有实现接口"); } System.out.println("----------------------------------------------"); /** * 获得该类的包 */ Package p = obj.getPackage(); if ( null != p) { System.out.println("该类的包: " + p.toString()); } else { System.out.println("该类没有在包下进行管理"); } } catch(Exception e) { e.printStackTrace(); }这些只是一些自己写的测试列子,其中对于发射的很多API还没有设计,如果要仔细研究,可以在网上搜一些相关的文章。
发表评论
-
Maven2 POM.xml 配置元素详解
2011-06-16 08:56 1421<!--可以免费转载,转载时请注明出处 http:// ... -
深入浅出URL编码
2010-12-24 09:35 948一、问题: 编码问题是JAVA初学者在web开 ... -
mysql自动关闭服务、连接限制等问题的解决方法
2010-11-22 09:36 3036通过mysql服务器端程序mysql Administrato ... -
高速缓存实现
2010-06-08 10:39 3995各位大虾,本人实现 ... -
Java开发中文件上传应用
2010-05-15 23:54 1163今天闲暇无所事事,很长时间没有写博客了,突然想起很多开发 ... -
Java ClassLoader 详解
2010-03-23 12:33 1102类加载器是 Java 语言的一个创新,也是 Java 语言流行 ... -
Java垃圾回收机制和性能调优
2010-01-29 12:40 8781.JVM的gc概述 g ... -
Java编码问题
2009-11-25 16:36 740乱码对于使用非英语文 ... -
JDK+Tomcat +eclipse+MyEclipse的配置
2009-11-16 14:48 1187说一下关于JDK+Tomcat +ecli ... -
Java图片水印处理
2009-10-30 13:28 1553import java.awt.AlphaComposite; ... -
Java正则表达式的解释说明
2009-10-28 18:18 713表达式意义: 1.字符 x ... -
Freemarker语法
2009-10-21 15:29 791常用语法 EG.一个对象BOOK 1.输出 $…{book.n ... -
Servlet的两种跳转区别
2009-10-19 13:46 1286在servlet中,一般跳转都 ... -
Berkeley DB实例
2009-10-15 09:49 1333package test; import com.sleep ... -
Berkeley DB使用说明
2009-10-14 18:32 1775关键字: berkeley db java edi ... -
Tomcat配置详解
2009-09-29 11:44 968第一步:下载j2sdk和tomcat 到sun官方站(htt ... -
URLConnection的连接、超时、关闭用法总结
2009-09-10 12:57 1797ava中可以使用HttpURLConnection来请求WEB ... -
时间操作工具类
2009-09-09 14:27 3212在项目开发工程中,使用了很多时间的操作,改工具类提供了很 ... -
Java操作图片改变大小加水印
2009-09-09 11:21 2070在实际的项目开发中,有可能遇到对图片的操作,比如加水印, ... -
操作抓取网络资源
2009-09-08 12:57 861在实际开发过程中,大家难免遇到抓取网络资源的操作,列如:抓 ...
相关推荐
java注解和反射的个人学习笔记
本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
java学习笔记java反射机制
本篇笔记将深入探讨Java反射的概念、重要性以及如何使用。 一、反射基础 1. 类加载:当Java虚拟机(JVM)加载一个类时,它会创建该类的Class对象。这个对象包含了关于类的所有信息,包括方法、字段、构造器等。...
在“java反射笔记”这个主题中,我们将深入探讨反射的基础知识和常见用法。 首先,我们需要了解什么是反射。在Java中,反射是指在运行时获取类的信息(如类名、方法名、参数类型等)并动态调用对象的方法或访问其...
8. **反射机制**:探讨Java反射API的使用,包括动态获取类信息、创建对象、调用方法等功能,这对于理解和调试程序有很大的帮助。 9. **JVM内部机制**:简述Java虚拟机的工作原理,包括类加载、内存管理、垃圾回收...
"Java入门第三季学习笔记"可能涵盖了更多高级话题,如反射、注解、设计模式和Java库的使用。反射允许程序在运行时检查类、接口、字段和方法的信息,提供了更大的灵活性。注解是一种元数据,可以用来提供编译器或运行...
### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...
Java反射是Java编程语言中的一个强大特性,允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射主要用于以下场景:动态加载类、访问私有成员、调用私有方法以及处理泛型等。以下是关于Java反射的一些...
Java反射机制是Java编程语言的一项重要特性,它允许程序在运行时动态地获取类的信息,并且能够对类的属性和方法进行操作。反射机制的核心在于Java的`java.lang.reflect`包,其中包含了`Class`、`Constructor`、`...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理对象、类、接口以及它们之间的关系...
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活...在提供的压缩包文件"JavaReflect"中,可能包含了关于Java反射和动态代理的示例代码和教程,通过学习和实践这些内容,你可以更深入地掌握这两种技术。
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
总结来说,Java反射机制是Java语言的一个重要特性,它使得程序能够在运行时动态地获取类的信息并进行操作,提高了代码的通用性和适应性。在实际开发中,反射机制常用于框架设计、插件系统、数据持久化等领域,但同时...
"Java超强学习笔记"显然是一份全面且深入的Java学习资料,由一位极具洞察力和组织能力的作者精心编纂。这份笔记可能包含了从基础知识到高级特性的全方位讲解,旨在帮助学习者构建坚实的Java编程基础,并提升他们的...
《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和...通过阅读和学习提供的"Java反射机制经典案例"文档,你可以深入理解这些概念,并学会如何在实际项目中有效地应用反射。