java反射机制学习:初始反射机制

     2022-03-22     697

关键词:

  本人小白一枚,想和大家一起分享我学习java的笔记和心得。

 

反射机制:
指的是可以于运行时加载、探知、使用编译期间完全未知的类。
程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个已加载的类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;

Class clazz = Class.forName(com.danchel.reflect.User);
加载完类之后,在堆内存中,就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。
我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称为:反射。

Class类是Reflection的根源。
针对任何你想动态加载、运行的类,唯有先获得相应的Class对象。

Class类的对象如何获取?
1、运用getClass();
2、运用Class.forName();
3、运用.class语法。

对象是用来表示和封装一些数据。一个类被加载后,JVM会创建一个对应该类的Class对象,类的整个结构信息会放到对应的Class对象中。
这个Class对象就像一面镜子一样,通过这面镜子我可以看到对应类的全部信息。
反射机制的核心就是此处的Class对象。

注意:同一个类,只会被加载一次(hashcode的值相同)。
Class clazz1=Class.forName(com.danchel.reflect.User);
System.out.println(clazz.hashCode());
Class clazz2=Class.forName(com.danchel.reflect.User);
System.println(clazz2.hashCode());

 

应用反射的API,获取类的信息(名字,属性,方法,构造器等)
//获取类的名字
System.out.println(clazz.getName()); //获取包括包名的类的名字
System.out.println(clazz.getSingleName()); //只获取类的名字,不包括包名

package com.danchel.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Demo02 {
public static void main(String[] args) {
String path = "com.danchel.reflect.User";

try {
Class clazz =Class.forName(path);

System.out.println(clazz.getName());//获取类的名字,包括包名
System.out.println(clazz.getSimpleName()); //只获取类的名字,不包括包的名字

Field[] fields2 =clazz.getFields(); //获得所有的访问权限为public的属性,访问权限为protected,default,private的属性不能获取
Field[] fields=clazz.getDeclaredFields();//获得所有的属性,不受访问权限限制
Field field =clazz.getDeclaredField("name");//获得单个属性,不受访问权限限制,参数是该对象要获取的属性名的字符串形式
System.out.println(field);
for(Field f:fields){
System.out.println("属性:"+f);
}

clazz.getMethods();//获得所有的访问权限为public的方法
Method[] methods =clazz.getDeclaredMethods();
Method method=clazz.getDeclaredMethod("setName", String.class);//获得单个方法,第一个参数是该对象要获取的方法名的字符串形式,第二个参数是该方法需要传进来的参数的类型.class
for(Method temp:methods){
System.out.println("方法:"+temp);
}

Constructor[] constructors=clazz.getDeclaredConstructors();
Constructor c = clazz.getDeclaredConstructor(String.class,String.class,int.class);//获得某一个构造器,参数是构造器需要传进来的参数的类型.class
System.out.println(c);
for (Constructor constructor : constructors) {
System.out.println("构造器:"+constructor);
}

} catch (Exception e) {
e.printStackTrace();
}
}
}
























































java学习笔记-反射机制

1. JAVA反射机制的概念 2.怎样实例化一个Class对象    Class.forName(包名.类名);  对象.getClass();  类.class;  ============================代码========================== 查看详情

java-反射机制学习

反射机制是Java的一个重要性,它使得Java语言具有了动态特性。比如说,可以在代码中动态地获取某个类的信息,生成它的实例、获取其成员变量、调用它的方法。下面通过几个示例来演示反射机制的作用与用法。示例1.获取类... 查看详情

java反射机制的学习

...sp;http://www.blogjava.net/zh-weir/archive/2011/03/26/347063.html Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类... 查看详情

java反射机制

Java反射机制一、序言:  在学习Java的深入知识时,发现好多地方都用到了反射机制,但我却没有深究过,所以想总结并且理解一下Java的反射机制。二、深入讲解:觉得这个博主讲得特别好   查看详情

反射机制

Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。 那么什么是Java的反射呢?       大家都知道,要让Java程序能够... 查看详情

简谈java反射机制,动态代理

谈谈Java反射机制,动态代理是基于什么原理?小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:701136382这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全... 查看详情

简谈java反射机制,动态代理

谈谈Java反射机制,动态代理是基于什么原理?小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:701136382这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全... 查看详情

反射学习

一、什么是反射机制?  java反射机制是在“运行状态”中,对任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象的方法的功能称为java... 查看详情

12000+字java反射,一起全面了解java反射机制,为学习框架铺路(代码片段)

文章目录Java反射机制理解Class类获取Class类实例类的加载过程类加载器ClassLoader创建运行时类的对象获取运行时类的结构调用运行时类的指定结构动态代理Java反射机制Reflection是被视为动态语言的关键,反射机制允许程序在执... 查看详情

javademo学习理解反射机制(基础学习)

目录反射机制是什么反射机制能做什么反射机制的相关API·通过一个对象获得完整的包名和类名·实例化Class类对象·获取一个对象的父类与实现的接口·获取某个类中的全部构造函数-详见下例·通过反射机制实例化一个类的对象·... 查看详情

java中的反射机制

...28494  我们一起学Java!      反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧!&nb 查看详情

java反射机制与动态代理

...HadoopRPC时。用到了函数调用。函数调用都是採用的java的反射机制和动态代理来实现的,所以如今回想下java的反射和动态代理的相关知识。一、反射JAVA反射机制定义:JAVA反射机制是java程序在执行状态中。对于随意一个类,都能... 查看详情

java--反射机制

​​​​​​一、反射以下引自Java反射机制是什么?Java反射机制是Java语言的一个重要特性。在学习Java反射机制前,大家应该先了解两个概念,编译期和运行期。编译期是指把源码交给编译器编译成计算机可以执行... 查看详情

java学习注解和反射超详细笔记(代码片段)

...注解1、注解入门2、内置注解3、自定义注解,元注解二、反射机制1、Java反射机制概念1.1静态&动态语言1.2反射机制概念1.3反射机制研究与应用1.4反射机制优缺点1.5实现2、理解Class类并获取Class实例2.1class类介绍2.2获取Class类的实... 查看详情

深入理解java的反射机制

今天将从以下4方面来系统的学习一下java的反射机制:java反射是什么java反射(Reflection)底层实现原理java反射的简单演示java反射的应用场景1,java反射是什么首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你... 查看详情

java讲课笔记36:初探反射机制

文章目录零、本讲学习目标一、认识反射(一)Java反射机制(二)Java反射的动态性质(三)如何理解Java反射的原理(四)利用反射可实现的功能二、Java反射常用API三、使用反射的基本步骤四、利用反射获取类的信息(一)获... 查看详情

java反射

 转载自Java反射机制Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。那么什么是Java的反射呢?       大家都知道... 查看详情

java的反射机制入门(代码片段)

理解Java的反射机制对学习Java框架有很大帮助,比如Spring框架的核心就是使用Java反射实现的,同时对做一些Java底层操作也会有帮助,比如字节码操作、自定义注解等。什么是反射Java反射说的是在运行状态中,对于任何一个类,... 查看详情