- 浏览: 129420 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
hanyuanbo:
多谢啦不过你这里有关于字符串的连接机制么?比如:String ...
栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴) -
only_java:
不错不错,但是好像没有关于字符流的介绍哦?
[转]Java IO 技术之基本流类 ~~~~~~~~ (图+讲解+代码) 好好看 有好处 -
lvwz2008:
比较简单,学习了也受益不少!
栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴) -
306781704:
看了你写的东西,很不错,基础的很详细
META元素使用详解 -
yihengliu:
总结的完全,有大帮助!
JSP内置对象详解1
Java Reflection API 运用示例<o:p></o:p>
图5示范图4提过的每一个Reflection API,及其执行结果。程序中出现的tName()是个辅助函数,可将其第一自变量所代表的“Java class完整路径字符串”剥除路径部分,留下class名称,储存到第二自变量所代表的一个hashtable去并返回(如果第二自变量为null,就不储存而只是返回)。<o:p></o:p>
<o:p> </o:p>
#001 Class c = null;<o:p></o:p>
#<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="True" sourcevalue="2" unitname="C">002 c</st1:chmetcnv> = Class.forName(args[0]);<o:p></o:p>
#003<o:p></o:p>
#004 Package p;<o:p></o:p>
#005 p = c.getPackage();<o:p></o:p>
#006<o:p></o:p>
#007 if (p != null)<o:p></o:p>
#008 System.out.println("package "+p.getName()+";");<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
package java.util;<o:p></o:p>
图5-1:找出class 隶属的package。其中的c将继续沿用于以下各程序片段。<o:p></o:p>
<o:p> </o:p>
#001 ff = c.getDeclaredFields();<o:p></o:p>
#002 for (int i = 0; i < ff.length; i++)<o:p></o:p>
#003 x = tName(ff[i].getType().getName(), classRef);<o:p></o:p>
#004<o:p></o:p>
#005 cn = c.getDeclaredConstructors();<o:p></o:p>
#006 for (int i = 0; i < cn.length; i++) {<o:p></o:p>
#007 Class cx[] = cn[i].getParameterTypes();<o:p></o:p>
#008 for (int j = 0; j < cx.length; j++)<o:p></o:p>
#009 x = tName(cx[j].getName(), classRef);<o:p></o:p>
#010 }<o:p></o:p>
#011<o:p></o:p>
#<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="True" sourcevalue="12" unitname="mm">012 mm</st1:chmetcnv> = c.getDeclaredMethods();<o:p></o:p>
#013 for (int i = 0; i < mm.length; i++) {<o:p></o:p>
#014 x = tName(mm[i].getReturnType().getName(), classRef);<o:p></o:p>
#015 Class cx[] = mm[i].getParameterTypes();<o:p></o:p>
#016 for (int j = 0; j < cx.length; j++)<o:p></o:p>
#017 x = tName(cx[j].getName(), classRef);<o:p></o:p>
#018 }<o:p></o:p>
#019 classRef.remove(c.getName()); //不必记录自己(不需import 自己)<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
import java.util.ListIterator;<o:p></o:p>
import java.lang.Object;<o:p></o:p>
import java.util.LinkedList$Entry;<o:p></o:p>
import java.util.Collection;<o:p></o:p>
import java.io.ObjectOutputStream;<o:p></o:p>
import java.io.ObjectInputStream;<o:p></o:p>
图5-2:找出导入的classes,动作细节详见内文说明。<o:p></o:p>
<o:p> </o:p>
#001 int mod = c.getModifiers();<o:p></o:p>
#002 System.out.print(Modifier.toString(mod)); //整个modifier<o:p></o:p>
#003<o:p></o:p>
#004 if (Modifier.isInterface(mod))<o:p></o:p>
#005 System.out.print(" "); //关键词 "interface" 已含于modifier<o:p></o:p>
#006 else<o:p></o:p>
#007 System.out.print(" class "); //关键词 "class"<o:p></o:p>
#008 System.out.print(tName(c.getName(), null)); //class 名称<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
public class LinkedList<o:p></o:p>
图5-3:找出class或interface 的名称,及其属性(modifiers)。<o:p></o:p>
<o:p> </o:p>
#001 TypeVariable<Class>[] tv;<o:p></o:p>
#002 tv = c.getTypeParameters(); //warning: unchecked conversion<o:p></o:p>
#003 for (int i = 0; i < tv.length; i++) {<o:p></o:p>
#004 x = tName(tv[i].getName(), null); //例如 E,K,V...<o:p></o:p>
#005 if (i == 0) //第一个<o:p></o:p>
#006 System.out.print("<" + x);<o:p></o:p>
#007 else //非第一个<o:p></o:p>
#008 System.out.print("," + x);<o:p></o:p>
#009 if (i == tv.length-1) //最后一个<o:p></o:p>
#010 System.out.println(">");<o:p></o:p>
#011 }<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
public abstract interface Map<K,V><o:p></o:p>
或 public class LinkedList<E><o:p></o:p>
图5-4:找出parameterized types 的名称<o:p></o:p>
<o:p> </o:p>
#001 Class supClass;<o:p></o:p>
#002 supClass = c.getSuperclass();<o:p></o:p>
#003 if (supClass != null) //如果有super class<o:p></o:p>
#004 System.out.print(" extends" +<o:p></o:p>
#005 tName(supClass.getName(),classRef));<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
public class LinkedList<E><o:p></o:p>
extends AbstractSequentialList,<o:p></o:p>
图5-5:找出base class。执行结果多出一个不该有的逗号于尾端。此非本处重点,为简化计,不多做处理。<o:p></o:p>
<o:p> </o:p>
#001 Class cc[];<o:p></o:p>
#002 Class ctmp;<o:p></o:p>
#003 //找出所有被实现的interfaces<o:p></o:p>
#004 cc = c.getInterfaces();<o:p></o:p>
#005 if (cc.length != 0)<o:p></o:p>
#006 System.out.print(", \r\n" + " implements "); //关键词<o:p></o:p>
#007 for (Class cite : cc) //JDK1.5 新式循环写法<o:p></o:p>
#008 System.out.print(tName(cite.getName(), null)+", ");<o:p></o:p>
<o:p> </o:p>
执行结果(例):<o:p></o:p>
public class LinkedList<E><o:p></o:p>
extends AbstractSequentialList,<o:p></o:p>
implements List, Queue, Cloneable, Serializable,<o:p></o:p>
图5-6:找出implemented interfaces。执行结果多出一个不该有的逗号于尾端。此非本处重点,为简化计,不多做处理。<o:p></o:p>
发表评论
-
中文乱码问题的解决方法
2007-11-05 22:46 2085tomcat下中文的彻底解决[转] http://blog ... -
候捷谈Java反射机制(6)
2007-11-05 22:44 1464Java 源码改动办法<o:p></o:p ... -
候捷谈Java反射机制(5)
2007-11-05 22:43 1118运行时生成instances<o:p></o ... -
候捷谈Java反射机制(4)
2007-11-05 22:42 1103#001 cc = c.getDeclaredClasses ... -
候捷谈Java反射机制(2)
2007-11-05 22:39 1028Java classes 组成分析<o:p>&l ... -
候捷谈Java反射机制(1)
2007-11-05 22:28 1617关于本文:<o:p></o:p> 读者 ... -
J2SE API读取Properties文件六种方法
2007-11-05 22:23 10411。使用java.util.Properti ... -
Java 调用存储过程
2007-11-05 22:21 891本文阐述了怎 ... -
JavaMail API细节详细解析大全
2007-11-05 22:16 1144一、JavaMail API简介 JavaMail API ... -
JAVA中正则表达式应用
2007-11-05 22:12 8401.简介: java.util.regex ... -
Java正则表达式详解
2007-11-05 22:08 814如果你曾经用过Perl或任何其他内建正则表达 ... -
JDBC 4.0 API
2007-11-05 21:55 1048???? -
JDBC 3.0 API (扩展部分)
2007-11-05 21:54 1242Ø ConnectionPoo ... -
JDBC 2.0 API
2007-11-05 17:19 988JDBC 2.0 API被划 ... -
开发基于JNDI的应用程序3
2007-11-05 16:18 1820JNDI 的DNS 服务提供程序 DNS服务提供程序使得基于 ... -
开发基于JNDI的应用程序2
2007-11-05 16:14 1390示例代码 2 Resolve2.java ... -
开发基于JNDI的应用程序1
2007-11-05 16:06 1078Java命名和目录接口(Java Naming and ... -
struts+spring+hibernate的web应用(4.6)
2007-10-25 11:35 961product_success.jsp页面代码: ... -
struts+spring+hibernate的web应用(4.5)
2007-10-25 11:32 1143addproduct.jsp页面代码: &l ... -
struts+spring+hibernate的web应用(4.4)
2007-10-25 11:11 1031接着就是写资源文件了。 在com.game.resource ...
相关推荐
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
### Java反射机制详解 #### 一、引言 在Java面试中,经常会出现与反射机制相关的题目。这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射...
JAVA反射机制应用 JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态...
java反射机制源码java反射机制源码java反射机制源码
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过Java反射机制,开发者可以在不知道具体类名的情况下创建对象,调用方法,访问和修改私有成员变量,以及...
Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...
### Java反射机制详解 #### 一、什么是Java反射机制? Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的...
在Java编程语言中,反射机制是一项强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具有高度的灵活性和动态性,可以在编译时未知类的情况下进行类的加载、实例化、方法调用等操作...
Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...
java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);
3. **通过反射机制修改数组的大小**:虽然Java数组的大小是固定的,但可以通过反射改变数组引用指向另一个数组来间接实现。 4. **将反射机制应用于工厂模式**:利用反射可以动态地创建对象,从而实现更加灵活的工厂...
### Java反射机制详解 #### 一、什么是Java的反射机制 Java反射机制是Java语言的一种重要特性,使得Java成为了一种动态性很强的语言。通过反射,可以在程序运行时获取类的信息,包括类名、父类、接口、字段、方法...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息,打破了通常编译时静态绑定的限制。通过反射,我们可以动态地创建对象,调用方法,访问和修改字段值,甚至...
通过阅读《候捷的Java精髓》,Java开发者可以深入理解语言的内在机制,提高代码质量,同时也能学习到如何解决实际开发中遇到的问题。书中的例子丰富、实用,便于读者理解和掌握。文件"art-java-b5-20050422-2ch.pdf...
Java反射机制是Java编程语言中的一项核心特性,它允许程序在运行时动态地获取类的信息并进行操作。这使得Java能够在编译后仍然能够灵活地处理类和对象,增强了代码的动态性。在Android应用开发中,反射机制尤其重要...
Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...