package com.study.reflect;
public class ReflectionDemo01 {
public static void main(String []args) {
//以下都是程序在《《《运行时》》》》
String str="学习java反射机制";
//java为任何类都可以拥有类class生成对应的Class对象
//可以使用 class :1) getClass() 方法 2)返回泛型 getSupperClass返回父类对象
System.out.println(str.getClass()); //class java.lang.String
//反射有以下几种方法加载任何类的对象到JVM中,且通过类加载器加载到内存
//方法一:使用Class<?> cla= xxx.getClass()方法
Integer inte= new Integer(100);
System.out.println(inte.getClass());//class java.lang.Integer
Double doub= new Double(100.0);
System.out.println(doub.getClass());
//方法二:Class.forName(); 运行时加载类到jvm
try{
Class<?> clazz=Class.forName("java.lang.Class"); //返回Class<?>泛型
System.out.println(clazz);
Class<?> cla= Class.forName("java.awt.font.GlyphMetrics");
System.out.println(cla);
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
//方法三:使用 Class 类名.class 加载
System.out.println(Boolean.class); //class java.lang.Boolean
System.out.println(Thread.class); //class java.lang.Thread
//方法四:使用getSupperClass 返回父类对象 Class类中的方法,返回该Class的父类的Class
//方法五:--运用primitive wrapper classes的TYPE语法: 基本类型包装类的TYPE,如:Integer.TYPE
// 注意:TYPE的使用,只适合原生(基本)数据类型
System.out.println(Integer.TYPE); //int
System.out.println(Double.TYPE); //double
///总结:
///在使用反射的时候,一般使用前三种方法,最常用的也是Class.forName() ,类名.class 作为加载类的
///在程序使用反射中需要有如下的步骤:
//Step 1: 使用Class.forName(),类名.class 加载类到jvm载入内存
//Step 2: 运行时实例化(Instace);实例化类有种实现方式
//A:类的实例化不带参数的构造方法 使用Class类的newInstace()方法直接实例化类。是不带参数的构造方法
//B:类的实例化有带参数的构造方法 使用Constructor类的getConstructor()方法传递参数
//使用带参数的构造方法首先需要准备 Class[] constructor的参数类型
//在使用Class getConstructor() 的专属于Constructor对象
//最后使用Object[] 对象的作为Constructor对象 newInstace()传递实参。
////////////////////////////备注注意///////////////////////////////////
//在这里需要说明的是 只有两个类拥有newInstance()方法,分别是Class类和Constructor类
//Class类中的newInstance()方法是不带参数的,而Constructro类中的newInstance()方法是带参数的
//需要提供必要的参数。
///////////////////////////////////////////////////////////////////////////////
//例如:
// Class clazz = Class.forName("TestReflection");
// Class[] classtype= new Class[]{Integer.class,String.class};
// Constructor constr= clazz.getConstructor(classtype);
// Object[] obj= new Object[]{100,"反射的使用带参数"};
// Object objinstace= constr.newInstace(obj);
//System.out.println(objinstace);
//Step 3: 运行时调用Method 方法
//Step 4: 运行时调用Field 方法
}
}
分享到:
相关推荐
### JAVA反射机制——Class类与Class对象的获取 #### 概述 在Java语言中,反射是一种强大的功能,允许程序在运行时动态地检查和修改自身的行为。这种能力是通过`java.lang.Class`类实现的,它提供了封装类或接口...
Java反射获取class对象方式解析 Java反射获取class对象方式解析是Java反射机制中的一种重要技术,它可以帮助开发者在运行时获取类的信息和对象实例。下面我们将通过示例代码详细介绍Java反射获取class对象方式解析...
* 反射机制:通过Class对象可以获取类的所有信息,例如字段、方法、构造函数等,可以用于反射机制。 * 动态加载类:通过Class类中的forName()方法可以动态加载类,实现动态加载类的功能。 * 依赖注入:通过Class对象...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了运行时的类信息。通过Class对象,我们...
总结来说,Java反射提供了一种动态操控Java对象的能力,允许我们在运行时发现和改变类的行为。虽然它强大且灵活,但也应谨慎使用,因为它可能会降低代码的可维护性和安全性。在实际开发中,反射常用于框架、插件系统...
Java中的Class对象是Java反射机制的核心,它代表了运行时的类信息。通过Class对象,我们可以在程序运行期间动态地获取类的各种属性、方法和构造器等信息,甚至可以实例化对象,使得Java具备了高度的灵活性和动态性。...
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...
Java反射机制是Java语言提供的一种强大功能,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个机制在处理不确定类型或者需要灵活操作类的场景中非常有用。在这个...
1. 获取Class对象 - 使用`Class.forName("类全名")`,如`Class<?> clazz = Class.forName("java.util.ArrayList");` - 对象的`getClass()`方法,如`String str = "Hello"; Class<?> clazz = str.getClass();` - ...
`Class`类在Java反射机制中扮演着核心角色,它是所有Java类的运行时表示。`Class`对象可以由以下几种方式获取: 1. **通过类的`Class`属性获取**:如`String.class`。 2. **通过对象的`getClass()`方法获取**:如`...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的应用场景下可能成为一个瓶颈。本文将深入...
Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是java.lang.Class,它代表了运行时的类信息。通过Class对象,我们...
Java中的Class对象是Java反射机制的核心,它代表了一个类的信息,包括类的名称、属性、方法等。在Java中,每个类都有一个对应的Class对象,它由Java虚拟机(JVM)在类加载时创建。了解Class对象的生成方式和原理对于...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要用到了java.lang.Class、java.lang.reflect.Method、java.lang.reflect....
Java 反射机制在对象打印中的应用 Java 反射机制是 Java 语言中的一种强大工具,允许程序在运行时检查和修改对象的行为。下面我们将讨论如何使用 Java 反射机制来打印一个对象的所有属性值。 Java 反射机制的概念 ...
### Java反射机制详解 #### 一、Java反射机制概述 Java反射机制是Java语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用...