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对象的获取.pdf
主要介绍了Java反射获取class对象方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用JAVA反射机制动态调用 计算器对象的加法,减法函数。 使用JAVA反射机制修改一个学生对象 的私有数据成员(不允许调用setters) 使用的类有Class, Method, Field
(获取class文件对象的三种方式) (通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) ...
1.获取Class对象的三种方式 2.获取构造方法并调用 3.获取成员方法 4.获取成员变量 5.反射数组 6.通过反射配置文件内容 7.通过反射越过泛型检查 8.其他一些文本笔记 读者需要补充的知识点我来说一下,补充: 1.反射...
每当一個类被载入时,JVM就自动为其生成一个Class对象,通过操作class对象,我们可以得到该对象的所有成员并操作它们 public class ClassDemo { public static void main(String[] args) { String name = “ACCP"; ...
其实从某种意义上说,在java中有两种对象:实例对象和Class对象。实例对象是我们平常定义的一个类的实例: /** * Created by aristark on 3/28/16. */ public class Person { } 然后利用new关键字...
Chp15 反射Key Point ●Class 对象及其基本操作●Method 对象以及invoke 方法●标注练习 1. (类对象)要获得类对象,有三种不同的方式,分别为_____________________、___________________、_____________________...
二,反射机制的作用: 1,反编译:.class-->.java 2,通过反射机制访问java对象的属性,方法,构造方法等; 这样好像更容易理解一些,下边我们具体看怎么实现这些功能。
反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取...
Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...
一、java反射机制概述 Reflection (反射)被视为动态语言的关键,为什么这么说呢,是因为它在运行时就确定下来了。反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的...
Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。
什么是反射 Class类的介绍 如何用Class类获得类的构造方法、成员属性、成员方法 利用java反射机制动态创建对象 利用java反射机制动态调用成员方法和改变成员变量
3.2.3 Java反射机制的相关API java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,...
java反射的用例代码 // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // ...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...
文章目录一、Java反射定义二、Java反射机制实现1、Class对象获取2、获取class对象的摘要信息3、获取class对象的属性、方法、构造函数等三、反射的应用场景1、动态代理2、自定义注解实现日志管理 写在前面:Java反射...
Java反射技术指的是在运行时动态地获取类的信息、调用对象的方法、操作类的属性等能力。通过反射,程序可以在运行时检查类、实例化对象、调用方法、获取和设置属性,甚至可以动态修改类的结构。 Java反射技术的核心...
1.反射机制概述 java能够反射的前提:已经加载过这个类 反射可以通过类名来寻找这个类的所有相关信息、类似于人类的记忆,事先在记忆中有了这个事物的信息,人就可以通过名字来在记忆中寻找事物的具体...java反射机制的