认识Class类:
在正常情况下,需要先有一个类的完整路径引入之后才可以按照固定的格式产生实例化对象,但是在java中也允许通过一实例化对象找到一个类的完整信息,那么这就是Class
范例:
package com.testFS.test;
/**
* 通过一个对象得到完整的“包.类”名称:getClass().getname()
* @author Administrator
*
*/
class Hello{
}
public class GetClassDemo1 {
public static void main(String[] args) {
Hello hello=new Hello(); System.out.println(hello.getClass().getName());
}
}
类包路径:
结果:com.testFS.test.Hello
从程序的运行结果中可以发现,通过一个对象得到了完整的“包.类”名称,那么有些读者会觉得奇怪,getClass()方法是哪里定义的呢?从之前学习到的知识读者知道,任何一个类如果没有明确地声明继承哪个父类时候,则默认继承Object类,则可知道getClass()方法是Object类中的,定义如下:
public final Class getClass() 返回一个Class类,此类是Java 反射的源头。
图片理解反射过程:
提示:java中Object类是一切类的父类,那么所有类的对象实际也都是Java.lang.Class类的实例,所以所有的对象都可以转变为Java.lang.Class类型表示。
在定义Class类时也使用了泛型声明,所以为了让程序不很出现警告信息,可以指定好其操作的泛型类型。
Class类的作用:
Class 本身表示一个类的本身,通过Class可以完整地得到一个类中的完整结构,包括类中的定义、属性定义等。
Class类的常用方法:
在Class类中本身没有定义任何的构造方法,所以如果要使用则首先必须通过forNmae()方法实例化对象。除此外,也可以用“类.class”或者“对象.getClass()”方法实例化。
范例:
package com.testFS.test;
/**
* 通过一个对象得到完整的“包.类”名称:getClass().getname()
* @author Administrator
*
*/
class Hello{
}
public class GetClassDemo1 {
@SuppressWarnings("unused")
public static void main(String[] args) {
//Hello hello=new Hello();
//System.out.println(hello.getClass().getName());
Class<?> c1=null;
Class<?> c2=null;
Class<?> c3=null;
try {
c1=Class.forName("com.testFS.test.Hello");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
c2=new Hello().getClass();
c3=Hello.class;
System.out.println("类名称c1:"+ c1.getName());
System.out.println("类名称c2:"+ c2.getName());
System.out.println("类名称c3:"+ c3.getName());
}
}
运行结果:
类名称c1:com.testFS.test.Hello
类名称c2:com.testFS.test.Hello
类名称c3:com.testFS.test.Hello
从程序的运行结果可以发现,三种实例化Class对象的方式是一样的,但是使用forName的静态方法实例化Class对象的方式是较为常用的一种方式,应重点掌握。
提示:使用forName()方法更加具有灵活性。
从以前程序的三种方法可以发现,出 forName()方法外,其他的两种:“对象.getClass()”,"类.class"都需要导入一个明确的类,如果一类操作不明确时,使用起来可能会受到一些限制。但是forName()传入时只需以字符串的方式传入即可,这样就让程序具备了更大的灵活性,所以此方法是最为常见的一种方式。
相关推荐
Java的Class类是Java反射机制的核心,它代表了Java中的每一个类和接口。Class类的主要功能是提供关于类的信息,包括类的结构、属性、方法等。以下是对Java Class类的详细说明: 1. **Class类对象的创建**:在Java中...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息,甚至动态地创建对象并调用其方法。通过反射,开发者可以实现高度灵活和动态的代码,这对于框架开发、元编程...
Java反射是Java语言提供的一种强大的机制,它允许我们在运行时检查和操作类、接口、字段和方法等。本文将深入剖析Java反射的概念及其在实际开发中的应用。 首先,我们需要了解,反射的核心在于`java.lang.Class`类...
Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...
Java反射是Java编程语言的一个强大特性,它允许运行时动态地获取类的信息并操作类的对象。通过反射,我们可以在程序执行过程中创建和访问类、接口、字段和方法,而不必在编译时知道它们的具体名称。本文将深入探讨...
Java反射机制是Java语言提供的一种强大的能力,它允许程序在运行时动态地获取类的信息并进行操作。在Java中,反射机制的核心是`java.lang.Class`类,它代表了Java中的每一个类。当Java虚拟机(JVM)加载一个类时,会...
9.1 反射:掌握Class类的使用,通过反射动态操作类和对象。 9.2 注解:理解注解的定义、元注解以及自定义注解的应用。 十、Java集合框架高级 10.1 泛型:理解泛型的基本用法,以及通配符的使用。 10.2 并发容器:...
在Java中,注解(Annotation)是一种元数据,它提供了将信息附加到代码(类、方法、变量等)的方式,而反射则允许我们在运行时检查类、接口、字段和方法的属性,并能动态调用方法或访问字段。 注解的作用主要有以下...
- 继承:一个类可以继承另一个类的属性和方法,实现代码的复用和扩展。 - 多态:允许不同类型的对象对同一消息做出不同的响应,增强了代码的灵活性。 2. Java基础语法 - 主函数:程序的入口点,`public static ...
8. **反射机制**:通过Class类获取类的信息,动态创建对象,调用方法,修改字段值。反射是Java的一个强大功能,常用于框架开发。 9. **Java API的使用**:如Math类的数学运算,日期时间API,正则表达式,XML解析等...
本篇主要是深入对Java中的Class对象进行分析,这对后续深入理解反射技术非常重要,主要内容如下:认识Class对象之前,先来了解一个概念,RTTI(Run-TimeTypeIdentification)运行时类型识别,对于这个词一直是C++中...
031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记.pdf 031503_【第15章:Java反射机制】_反射应用——取得类的结构笔记.pdf 031504_【第15章:Java反射机制...
六、Java反射与注解 1. 反射:理解Class类,通过反射动态获取和操作类的信息。 2. 注解:自定义注解,注解的元注解,使用反射读取注解信息。 七、Java设计模式 熟悉常见的设计模式,如单例、工厂、观察者、装饰器、...
【Java试题(60道)】是一份针对Java编程语言的综合练习题集,涵盖了从基础语法到高级特性的各种知识点。这份试题旨在帮助学习者检验自己的Java掌握程度,强化理解,并提升编程技能。试题结合了中英文双语,使得国内外...
- 关键字与标识符:了解Java中的保留关键字,如`public`, `class`, `void`, `int`等,以及如何命名变量和类。 - 数据类型:基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类、接口和数组)。 ...
1. 反射:掌握Class类的使用,以及动态创建对象、调用方法和访问字段的能力。 2. 注解:理解注解的定义、元注解和自定义注解的实现,以及注解在编译和运行时的作用。 八、JVM内存模型 1. 堆内存:了解对象的生命...
Java反射技术是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作其他类、接口、对象和方法,即使这些类在编译时并未被明确引用。反射技术是Java实现动态性的重要手段,广泛应用于框架开发、元数据处理、...
1. 反射:通过Class类获取类信息,动态创建对象,调用方法和访问字段。 2. 注解:理解注解的定义、元注解和运行时注解的处理。 九、Java标准库API 熟悉Java标准库中的常用类和方法,如Math、Collections、Arrays、...
- 反射API:通过Class类获取类的信息,动态创建对象,调用方法和访问字段。 11. **Java的IO/NIO** - NIO(New Input/Output):了解非阻塞I/O模型,以及Channel、Buffer、Selector等核心组件。 通过这个"JAVA...