`
RepublicW
  • 浏览: 83245 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

refection

 
阅读更多
Reflection 是 Java 程序开发语言的重要特征之一,是学习Java必须

String s = "aaa";  
Class cls1 = s.getClass();  
Class cls2 = String.class;  
Class cls3 = Class.forName("java.lang.String");  
if (cls1 == cls2) {  
 System.out.println("cls1 == cls2");  
}  
if (cls2 == cls3) {  
 System.out.println("cls2 == cls3");  
}  


知识点。
Java反射机制主要提供了以下功能:在运行时构造一个类的对象;判断一个类所具有的成员变量和方法;调用一个对象的方法;生成动态代理。反射最大的应用就是框架

主要用途是:通过传递一个字符串值 去调用某一个类的方法。例如根据spec0去调用SpecValue下的setSpce0()方法。
Java.lang.Class和Java.lang.reflect包下的API,用于表示或者处理当前JVM中的类,接口和对象。
Java反射的主要功能:
   确定一个对象的类
    取出类的modifiers,数据成员,方法,构造器,和超类.
    找出某个接口里定义的常量和方法说明.
    创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象).
    取得和设定对象数据成员的值,如果数据成员名是运行时刻确定的也能做到.
    在运行时刻调用动态对象的方法.
    创建数组,数组大小和类型在运行时刻才确定,也能更改数组成员的值.

Class类是Java反射的基础,Class类表示正在运行的java应用程序中的类和接口。Class只有私有的构造函数。Class类在加载类时由Java虚拟机以及调用类加载器中的 defineClass方法自动创建的。只在内存中存在一份加载类的Class类。
三种方式得到某个Java类的Class类,以java.lang.String为例:

为什么他们三个会==呢?因为他们描述的都是同一个类java.lang.String类。
Class类还有很多方法,配合java.lang.reflect包下的一些API可以实现更多的功能。
分享到:
评论

相关推荐

    反射(Refection)实现镜像对象封装库.zip

    在这个名为“反射(Refection)实现镜像对象封装库”的开源项目中,开发者创建了一个库来简化Java中的反射操作,提供了更方便的方式来创建、访问和修改对象。该项目的核心目标是提高代码的灵活性和可维护性。 镜像...

    java_reflection_in_action_(manning-2005).part1

    We wrote this book because reflection inspires us. It produces solutions so elegant that they elicit the same sense of wonderment that we often felt as children. It is this inspiration that has driven...

    Professional C#4.0 and .NET 4.0 part2

    Chapter 14: Refection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Chapter 15: Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . .351 Part ii: Visual Studio ...

    Professional C# 4.0 and .NET 4.0 part1

    Chapter 14: Refection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Chapter 15: Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . .351 Part ii: Visual Studio ...

    Reflection_C_plus_plus:C ++中的反思

    Refection C ++ C ++复制的一种简单实现。介绍使用C ++模板元编程技术(Boost.MPL) 在编译期间生成的元数据存储在只读数据区域中需要boost库和GCC 4.7或更高版本样本# include < cstdlib># include < cstring># ...

    refraction:简单的C ++反射库,仅标头

    bj ::折射 一个非常轻量级的仅用于C ++的标头反射库。 遵循C ++的核心原则,您不用为不用的东西付费。 从根本上讲,零成本在不使用的情况下为最低成本。目录例子忽略此示例中的不良做法(例如iostream:P),并查看...

    java最难笔试题-wam_common_lisp:允许Lisp程序停止实现不到一半的ISO-Prolog的临时的、非正式指定的、漏洞百出的、

    refection is powerful enough to make all resulting optimizations and program self-repairs trivial/obvious. (This Method works for Curry-lang, Haskell, JavaScript, C, C++, etc - ALL languages) 停止实现...

    typescript_reference:TypeScript功能的简单概述

    **TypeScript功能的简单概述** TypeScript是一种由微软开发的强类型、静态类型的编程语言,它是JavaScript的一个超集,旨在提供更好的工具支持和更健壮的代码基础。它在JavaScript的基础上添加了类型系统、接口、类...

Global site tag (gtag.js) - Google Analytics