`
primer_2004
  • 浏览: 129399 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

候捷谈Java反射机制(2)

    博客分类:
  • Java
阅读更多

Java classes 组成分析<o:p></o:p>

首先容我以3java.util.LinkedList为例,将Java class的定义大卸八块,每一块分别对应4所示的Reflection API5则是“获得class各区块信息”的程序示例及执行结果,它们都取自本文示例程序的对应片段。<o:p></o:p>

<o:p> </o:p>

package java.util;                      //(1)<o:p></o:p>

import java.lang.*;                     //(2)<o:p></o:p>

public class LinkedList<E>              //(3)(4)(5)<o:p></o:p>

extends AbstractSequentialList<E>       //(6)<o:p></o:p>

implements List<E>, Queue<E>,<o:p></o:p>

Cloneable, java.io.Serializable         //(7)<o:p></o:p>

{<o:p></o:p>

private static class Entry<E> { }//(8)<o:p></o:p>

public LinkedList() { }           //(9)<o:p></o:p>

public LinkedList(Collection<? extends E> c) { }<o:p></o:p>

public E getFirst() { }           //(10)<o:p></o:p>

public E getLast() { }<o:p></o:p>

private transient Entry<E> header = ;  //(11)<o:p></o:p>

private transient int size = 0;<o:p></o:p>

}<o:p></o:p>

3:将一个Java class 大卸八块,每块相应于一个或一组Reflection APIs(图4)。<o:p></o:p>

<o:p> </o:p>

Java classes 各成份所对应的Reflection APIs<o:p></o:p>

3的各个Java class成份,分别对应于4Reflection API,其中出现的PackageMethodConstructorField等等classes,都定义于java.lang.reflect<o:p></o:p>

Java class 内部模块(参见3<o:p></o:p>

Java class 内部模块说明<o:p></o:p>

相应之Reflection API,多半为Class methods<o:p></o:p>

返回值类型(return type)<o:p></o:p>

(1) package<o:p></o:p>

class隶属哪个package<o:p></o:p>

getPackage()<o:p></o:p>

Package<o:p></o:p>

(2) import<o:p></o:p>

class导入哪些classes<o:p></o:p>

无直接对应之API<o:p></o:p>

解决办法见5-2<o:p></o:p>

<o:p> </o:p>

(3) modifier<o:p></o:p>

class(或methods, fields)的属性<o:p></o:p>

<o:p> </o:p>

int getModifiers()<o:p></o:p>

Modifier.toString(int)<o:p></o:p>

Modifier.isInterface(int)<o:p></o:p>

int<o:p></o:p>

String<o:p></o:p>

bool<o:p></o:p>

(4) class name or interface name<o:p></o:p>

class/interface<o:p></o:p>

名称getName()<o:p></o:p>

String<o:p></o:p>

(5) type parameters<o:p></o:p>

参数化类型的名称<o:p></o:p>

getTypeParameters() <o:p></o:p>

TypeVariable <Class>[]<o:p></o:p>

(6) base class<o:p></o:p>

base class(只可能一个)<o:p></o:p>

getSuperClass()<o:p></o:p>

Class<o:p></o:p>

(7) implemented interfaces<o:p></o:p>

实现有哪些interfaces<o:p></o:p>

getInterfaces()<o:p></o:p>

Class[]<o:p></o:p>

<o:p> </o:p>

(8) inner classes<o:p></o:p>

内部classes<o:p></o:p>

getDeclaredClasses()<o:p></o:p>

Class[]<o:p></o:p>

(8') outer class<o:p></o:p>

如果我们观察的class 本身是inner classes,那么相对它就会有个outer class<o:p></o:p>

getDeclaringClass()<o:p></o:p>

Class<o:p></o:p>

(9) constructors<o:p></o:p>

构造函数getDeclaredConstructors()<o:p></o:p>

不论 public private 或其它access level,皆可获得。另有功能近似之取得函数。<o:p></o:p>

Constructor[]<o:p></o:p>

(10) methods<o:p></o:p>

操作函数getDeclaredMethods()<o:p></o:p>

不论 public private 或其它access level,皆可获得。另有功能近似之取得函数。<o:p></o:p>

Method[]<o:p></o:p>

(11) fields<o:p></o:p>

字段(成员变量)<o:p></o:p>

getDeclaredFields()不论 public private 或其它access level,皆可获得。另有功能近似之取得函数。<o:p></o:p>

Field[]<o:p></o:p>

4Java class大卸八块后(如图3),每一块所对应的Reflection API。本表并非<o:p></o:p>

Reflection APIs 的全部。
分享到:
评论

相关推荐

    java面试题--反射机制

    ### Java反射机制详解 #### 一、引言 在Java面试中,经常会出现与反射机制相关的题目。这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射...

    JAVA反射机制应用

    JAVA反射机制应用 JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态...

    java反射机制源码

    java反射机制源码java反射机制源码java反射机制源码

    Java反射机制的实现_Reflection

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过Java反射机制,开发者可以在不知道具体类名的情况下创建对象,调用方法,访问和修改私有成员变量,以及...

    java 反射机制详解

    Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...

    Java反射机制Demo

    ### Java反射机制详解 #### 一、什么是Java反射机制? Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的...

    JAVA反射机制的入门代码

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...

    北大青鸟java反射机制

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念...

    Java反射机制课件ppt

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具有高度的灵活性和动态性,可以在编译时未知类的情况下进行类的加载、实例化、方法调用等操作...

    Java反射机制笔记(简单易懂)

    Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...

    java反射机制核心代码

    java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);

    java反射机制讲解

    Java反射机制是Java语言提供的一种强大的能力,它允许我们在运行时检查类的信息并动态地创建和操作对象。这种机制使得程序具有更高的灵活性和扩展性,尤其是在框架开发中有着广泛的应用。 首先,我们要理解反射的...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    Java反射机制

    ### Java反射机制详解 #### 一、什么是Java的反射机制 Java反射机制是Java语言的一种重要特性,使得Java成为了一种动态性很强的语言。通过反射,可以在程序运行时获取类的信息,包括类名、父类、接口、字段、方法...

    java反射机制,很安逸.不要错过

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息,打破了通常编译时静态绑定的限制。通过反射,我们可以动态地创建对象,调用方法,访问和修改字段值,甚至...

    候捷的java精髓

    通过阅读《候捷的Java精髓》,Java开发者可以深入理解语言的内在机制,提高代码质量,同时也能学习到如何解决实际开发中遇到的问题。书中的例子丰富、实用,便于读者理解和掌握。文件"art-java-b5-20050422-2ch.pdf...

    Java反射机制的学习

    Java反射机制是Java编程语言中的一项核心特性,它允许程序在运行时动态地获取类的信息并进行操作。这使得Java能够在编译后仍然能够灵活地处理类和对象,增强了代码的动态性。在Android应用开发中,反射机制尤其重要...

    通过Java反射机制获取JavaBean对象

    1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息

    Reflection_in_Java.zip_in_java 反射_java 反射机制_java反射_反射机制

    Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...

Global site tag (gtag.js) - Google Analytics