JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对
于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用
对象的方法的功能称为java语言的反射机制。
我们刚刚接触反射的时候,可能就在想,这个在我们编写程序的时候,很少用到,到底有什
么用呢?没错,对于普通编程根本就用不到反射,但是有时候我们在网络上传给我一个类,
这个类我们事先是不知道的,这个需要动态的加载,这时候就需要了,在比如我们都知道
spring struts
hibernate ibatis这些框架,他们存在的基础就是:反射。
我也用过反射,最近在学Java的时候,学到了,就写个笔记记录下来。
首先说Class类,这里的C是大写的,这个是一个类名叫Class的class,这个类也是从Object
class继承来的。这个类的实例表示的是Java中的一份字节码文件。这里有一点需要注意,这里
的一份说的是如果这个类有字节码那么只有一份。既然Class是一个类,那么我们就可以实例化,
我们很自然的就想到了new Class(),但是这个在Java中是没有的。但是在Java的每个类中都提供了一个getClass方法,
这个方法的返回值就是一个Class实例。我们还可以使用“类名.class”得到这个对象的字节码。
这里还有一点注意,在Java中八个基本数据类型也对应的有字节码,我们也可以使用int.class
类似的方法,得到基本数据类型的字节码。还有一个有意思的事就是,我们经常使用的void也
有一份字节码。
既然八个基本数据类型都有对应的字节码,我们知道在Java中对于基本数据类型都提供了对应
的封装类,那么这两个的字节码是同一个吗?答案是不是,一个基本数据类型,一个是对象。
这里说句题外话,Java号称是完全面向对象的,但是还是提供了基本数据类型,它们不是对象,
但是在Java1.4以后,我可以把它当成对应的封装类对象,因为Java提供了对于基本数据类型的
自动拆箱和装箱。但是在Ruby中所有的都是对象包括基本数据类型。
下面我们举一个例子,验证上面说的:
-
import
java.lang.reflect.Constructor;
-
-
public
class
ReflectTest
-
{
-
public
static
void
main(String[] args)
throws
Exception
-
{
-
-
String str =
"abc"
;
-
Class cla1 = str.getClass();
-
Class cla2 = String.
class
;
-
Class cla3 = Class.forName(
"java.lang.String"
);
-
System.out.println(cla1 == cla2);
-
System.out.println(cla2 == cla3);
-
-
System.out.println(cla1.isPrimitive());
-
System.out.println(
int
.
class
.isPrimitive());
-
System.out.println(
int
.
class
== Integer.
class
);
-
System.out.println(
int
.
class
== Integer.TYPE);
-
System.out.println(
int
[].
class
.isPrimitive());
-
System.out.println(
int
[].
class
.isArray());
-
}
-
-
}
-
true
-
true
-
false
-
true
-
false
-
true
-
false
-
true
分享到:
相关推荐
Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...
总结起来,“java反射笔记”涵盖了Java反射的基本概念、使用方式以及在Eclipse环境下的一些注意事项。通过对`Class`、`Method`和`Field`对象的操作,我们可以实现动态编程,增强代码的灵活性,但同时也需要注意性能...
java注解和反射的个人学习笔记
Java 反射机制是指通过 Java 语言提供的一些 API 来访问和操作 Java 对象的结构和行为的机制。它允许程序在运行时检查和修改自身的结构和行为,而不需要在编译时知道这些信息。 ### Java 反射机制的应用场景 Java ...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理对象、类、接口以及它们之间的关系...
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
java学习笔记java反射机制
本篇笔记将深入探讨Java反射的概念、重要性以及如何使用。 一、反射基础 1. 类加载:当Java虚拟机(JVM)加载一个类时,它会创建该类的Class对象。这个对象包含了关于类的所有信息,包括方法、字段、构造器等。...
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行方面发挥着关键作用。本文将深入探讨这两个概念及其在实际开发中的应用。 **Java反射** Java反射API允许程序在运行时检查类、接口...
Java反射是Java编程语言中的一个强大特性,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白,它属于元编程的一部分,即在编写程序时能够...
### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...
本笔记将深入探讨Java反射的原理、用途以及如何使用。 一、反射的概念与作用 反射是Java提供的一种能力,它允许程序在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法。这种动态性使得Java...
Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等对象,即使这些对象在编译时并未知。这为开发者提供了动态性,可以处理未知类型的对象,或者在运行时发现和调用类的...
8. **反射机制**:探讨Java反射API的使用,包括动态获取类信息、创建对象、调用方法等功能,这对于理解和调试程序有很大的帮助。 9. **JVM内部机制**:简述Java虚拟机的工作原理,包括类加载、内存管理、垃圾回收...
最后,笔记可能会介绍Java标准库的一些重要部分,如JDBC(Java数据库连接)用于数据库操作,或者Swing和JavaFX用于构建图形用户界面。 每道练习的源代码答案和讲师留下的思考题源代码,都是实际动手编程的宝贵资源...
《狂神说JAVA的所有笔记》是一份全面且深入的JAVA学习资源,包含了JAVA语言的核心概念、进阶技术以及实际应用的方方面面。这份笔记是作者在深入研究JAVA编程过程中积累的宝贵经验,旨在帮助读者系统性地掌握JAVA这门...
通过对《李兴华Java实战经典笔记》的深入学习,读者不仅可以掌握Java编程的基础知识,还能了解到实际项目中的一些最佳实践,这对于成为一名合格的Java开发者来说是非常有益的。同时,结合实际编程练习,可以更好地...
这份"java全套培训笔记"来自于加拿大的知名IT培训机构——达内软件,它提供了全面深入的学习资源,涵盖了从基础到高级的Java编程知识,对于想系统学习或者提升Java技能的人来说极具价值。 首先,我们来探讨Java的...
Java反射机制是Java编程语言的一项重要特性,它允许程序在运行时动态地获取类的信息,并且能够对类的属性和方法进行操作。反射机制的核心在于Java的`java.lang.reflect`包,其中包含了`Class`、`Constructor`、`...