java反射机制模式

Java Reflection

1.JAVA反射机制:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。

1.1Java反射机制的好处:

Java反射机制通过new来实例化对象只需要(包.类),这样使得反射机制灵活性更高。




1、获取Class对象属性

package com.reflection.calss;

public class Book {
	private String name;
	private int no;
	private String type;
   
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	   
   
}

2、测试类:

package com.reflection.calss;


/*
 * 第一: 反射   Class 对象的机制与实现:
 * */
public class Test {
	public static void main(String[] args) {
		Class dom1 = null;
		Class dom2 = null;
		Class dom3 = null;
	
		try {
			//第一种:最重要
			dom1 = Class.forName("com.reflection.calss.Book");
			System.out.println("第一种:"+ dom1);
			//第二种
			Book book = new Book();
			//Object bk = book.getClass();
			Class<?> bk = book.getClass();
			System.out.println("第二种:"+ bk);
			//第三种
			dom3 = Book.class;
			System.out.println("第三种:"+ dom3);
			
			//先获取class对象   再获取实例化对象
			Book book3 = (Book) dom3.newInstance();
			System.out.println("实例化对象和内存地址:"+ book3);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}


3、Method对象的机制与实现

package com.reflection.method;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MethodDom {
	
	//获取方法名   
	public void  MethodTest(Object ob){
		Class cl = ob.getClass();
		Method[]  me = cl.getDeclaredMethods();
		for(Method mm : me){
			System.out.println("方法名称:" + mm.getName() );
			System.out.println("修饰符:" + mm.getModifiers() );
			System.out.println("" + mm.getReturnType() + " \n  ");
		}
	}
	
	//获取实例化方法   
	public void showuser(Object ob){
		
		try {
			//方法名  无参数
			Class  cl = ob.getClass();
			Method me= cl.getMethod("getName", null);
			me.invoke(ob, new Object[0]);
			//方法名 一参数
			Method ms = cl.getMethod("setName", String.class);
			ms.invoke(ob, "set 调用");
			//方法名  多参数
			Class[] cll = {String.class, int.class};
			Method m1 = cl.getMethod("Test", cll);
			Object[] boj = {"哈哈哈",123};
			m1.invoke(ob, boj);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}	
}



4、测试类:

package com.reflection.method;

import com.reflection.field.Book;

public class TestMethod {
	public static void main(String[] args) {
	    Book ob = new Book();
	    ob.setName("跑男第十八季");
	    ob.setType("娱乐");
	    ob.setNo(90);

	    MethodDom te = new MethodDom();
	    //te.MethodTest(ob);
	    te.showuser(ob);
	    System.out.println(ob.getName());
	    System.out.println(ob.getName());

   }
}


5、Field 对象的机制与实现
package com.reflection.field;

import java.lang.reflect.Field;

public class ShowField {
	
		//第一种:方法  接收传递过来的class对象
		public void show(Class c){
			//getFields只能获取共有属性    getDeclaredFields可以获取私有属性
			Field[] fi = c.getDeclaredFields();
			for(Field ff : fi){
				System.out.println(ff.getName());
				System.out.println(ff.getType());
			}
		}
		
		//第二种: 接收传递过来的实体类对象   对象的属性  和 值
		public void obshow(Object ob){
			Class  cs = ob.getClass();
			Field[] fo = cs.getDeclaredFields();
			
			for(Field e : fo ){
				try {
					//私有属性可见
					e.setAccessible(true);
					System.out.println("名:"+e.getName()+ "  "  + "值:"+e.get(ob));
					
					
				} catch (IllegalArgumentException e1) {
					e1.printStackTrace();
				} catch (IllegalAccessException e1) {
					e1.printStackTrace();
				}
			  }
		}	
}



6、测试类:

package com.reflection.field;

public class Test {
	public static void main(String[] args) {
		Book bo = new Book();
		bo.setNo(1);
		bo.setName("斗破苍穹");
		bo.setType("玄幻");
		
		ShowField ft = new ShowField();
	    ft.show(Book.class);
		ft.obshow(bo);
	}
}






看看这篇文章


反射机制和工厂设计模式的使用(http://blog.youkuaiyun.com/javawebrookie/article/details/49686587)


简单工厂设计模式(http://blog.youkuaiyun.com/javawebrookie/article/details/49682021)






深入理解工厂模式:利用反射机制的Java代码实践 工厂模式是一种对象创建模式,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。这种类型的设计模式属于创建型模式。Java反射机制是Java语言中一个非常重要的特性,它允许程序在运行时访问和操作类的内部信息。通过反射,Java程序能够在执行期间发现和修改类的行为,这是许多高级框架和库所依赖的关键机制。本章我们将深入探讨反射机制的基础知识及其使用场景。 阅读详情

相关推荐

w3cschool 全套手册 离线版

最全最新的w3cschool开发手册

w3school和w3cschool两个网站有什么关系和区别?(转)

w3school地址:http://www.w3school.com.cn/ w3cschool地址:http://www.w3cschool.cn/总结结论: w3更早。w3school是06年注册的,而w3cschool是09年注册的。 w3c更权威。其中w3cschool是应w3c中国组织官方而出的,而w3school是上海赢科投资有限公司进行投资的,但是是为了协助w3c中国组织而出的。都是

microcosmv的博客 1万+

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

W3school和W3Cschool的区别

W3school和W3Cschool的区别

weixin_54626591的博客 4942

【tensorrt】——深入解析TypeError: pybind11::init()报错:CUDA版本冲突与解决方案

本文深入解析了TensorRT中常见的TypeError: pybind11::init()报错问题,重点探讨了CUDA版本冲突的根源与解决方案。通过实际案例展示了PyTorch与TensorRT的版本兼容性问题诊断方法,并提供了conda环境管理、环境变量配置等实用修复技巧,帮助开发者有效解决CUDA初始化失败问题。

ggg99的专栏 273

hive sql每个用户的累积访问次数

我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20 3 u01 2017/1/23 6 u01 2017/2/21 8 U02 2017/1/23 6 U01 2017/2/22 4 要求使用SQL...

weixin_39150719的博客 3488

w3school、w3cschool、w3schools区别与联系

w3school、w3cschool、w3schools都是编程学习网站。w3schools出现得最早,于1998创建,内容主要以网页教程。w3school是06年注册的,而w3cschool是09年注册的,都是国内网站,最开始其内容都差不多,后来w3cschool转为视频为主。以python网页教程为例,发现w3cschool广告最少,而w3school和w3schools内容更加全面。

xunyan6234的博客 5973

华为昇腾Atlas200DK. CANN模型推理——目标检测结果不对(无检测结果)的问题解决

目录前言问题描述问题排查1.后处理模块问题排查2.预处理模块问题排查3.模型问题排查4.算法bug问题排查5.AI板卡问题排查6.模型精度问题排查6.模型推理问题解决:模型输入数据与预处理不同后记 前言 上周我在华为昇腾Atlas200DK中部署nanodet和yolov5时,出现了目标检测结果不对(没有检测到任何物体),困扰了整整三天,最后找到原因并圆满解决,在这里记录一下debug过程。 以上测试均在python中完成。 问题描述 第一天上午,我首先将nanodet由pytorch的.pth模型转换为.

qq_41035283的博客 5605

w3cschool 和 w3schools 的区别

如果你需要英文教程、快速查阅语法→ 选W3Schools。如果你是中文用户,希望系统学习或查找本地化内容→ 选W3CSchool。注意:两者均非W3C官方机构,但W3Schools的知名度更高,而W3CSchool更适合中文环境。

wuxiaobingandbob的专栏 1340

Mac版Burp Suite专业版破解与汉化完整指南

在Web安全测试领域,Java应用程序的许可证验证机制与本地化实现是常见的技术课题。其原理通常涉及Java Agent技术,通过在JVM启动时动态修改字节码,实现对软件授权状态的校验逻辑进行拦截与重写,从而绕过官方验证。同时,软件界面的国际化(i18n)与本地化(l10n)则依赖于资源文件的替换与加载。从技术价值角度看,深入理解这些机制不仅能满足特定场景下的工具定制需求,更能加深对Java安全机制、软件保护与逆向工程的理解。在实际的工程实践中,安全研究人员与开发者常面临功能受限或语言障碍的挑战,尤其是在渗透

weixin_29327525的博客 1063

基于DynamicHead的YOLOv8四头版本改进:面向复杂场景的多目标检测优化【YOLOv8】

YOLOv8的检测头是通过不同尺度的特征层输出检测结果。这些检测头通常包括三个:用于大物体、中等物体和小物体的检测。然而,这种单一结构可能会在复杂场景下失去针对性和灵活性,特别是当多个目标之间差异较大时。为了进一步提升模型在特定目标上的检测性能,DynamicHead的引入为我们提供了一个多检测头的优化方案。本文提出了一种基于DynamicHead的四头版本YOLOv8改进方案,以解决复杂场景下多目标检测的挑战。通过引入四个独立检测头,分别针对不同目标特征进行优化,实现了更灵活的检测结构。

博客 1719

Java反射机制在工厂模式中的应用

在本篇文章中就不详细介绍工厂模式,主要介绍一下反射在工厂模式中的使用,让读者对反射机制带来的好处有更深的认识。 首先看一下简单工厂模式 简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。 简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。 简单工厂模式实例: //动物接口 interface A

小草的博客 7245

PCL 基于法线微分(DoN)的点云分割【2026最新版】

基于法线微分的分割。博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 39万+

Java反射机制在代理模式中的使用

代理模式的核心思路就是一个接口有两个子类,一个子类完成核心的业务操作,另一个子类完成与核心业务有关的辅助性操作。 代理模式分为静态代理模式和动态代理模式。  静态代理模式: //接口类 interface Food{ public void eat(); } //核心业务操作类 class RealFood implements Food{ @Override public voi

小草的博客 3298

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java反射机制,Java代理模式

Java反射机制,Java代理模式

XiaoArea的博客 412

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

单例模式,基于Java反射机制的实现

在实际开发中,单例模式是一种很有用的设计模式,本文旨在介绍一种比较优雅的实现方式,基于Java反射机制的单例实现

abguorui0928的专栏 1212

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA工厂设计模式和反射机制

JAVA工程设计模式和反射机制 工厂设计模型是JAVA面向对象编程的基本模型,因为只要是获取实例,都应该通过工厂类来完成。 设计代码如下: package com.cn.test; interface IMessage{ public void send(String msg); } class NewsPaper implements IMessage{ @Override ...

qq_35197520的博客 344

java 反射工厂模式_java反射机制(工厂模式)

http://www.phpddt.com/dhtml/338.htmljava里面没有typeof,js有。我终于实现了用反射机制编写的工厂模式。java反射在工厂模式可以体现。包含产品接口类,具体产品实现类,工厂类,这三种不同的类型http://wenku.baidu.com/view/8899ecfff705cc175527094d.htmlhttp://wenku.baidu.com/vi...

weixin_31922807的博客 298

java 反射 工厂模式_Java反射机制demo(七)—反射机制与工厂模式

Java反射机制demo(七)—反射机制与工厂模式工厂模式简介工厂模式是最常用的实例化对象模式。工厂模式的主要作用就是使用工厂方法代替new操作。为什么要使用工厂模式?直接new不好吗?直接new没有什么不好,只是工厂模式可以给系统带来更好的可扩展性和尽量少的修改量。分类工厂模式一般有两类,一类是工厂方法模式,另一类是抽象工厂模式。但是《head first 设计模式》中,通过某些例子,实际上把工...

weixin_34902502的博客 244

java 反射 工厂_JAVA反射机制、工厂模式与SPRING IOC

ABSTRACTSpring的IOC(控制反转)是Spring框架的灵魂,有了它才有了Spring的很多其他的灵活的特性。使用 Spring 开发项目时,控制层、业务层、DAO 层都是通过 IoC 来完成依赖注入的。IOC其实就是工厂模式+Java的反射机制,所以要理解IOC,我们必须要对工厂模式和反射机制有了解。什么是IOC在传统的程序开发中,当需要调用对象时,通常由调用者来创建被调用者的实例,...

weixin_42520025的博客 229

java 反射机制在工厂模式中的应用

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 反射 https://www.hellojava.com/a/78356.html /* java 反射机制在工程模式中的应用 1 phone 手机接口 2 Iphone 类实现手机接口 3 HuaWei 类实现手机接口 4 Factory 工厂类

qq_42304949的博客 287

java通过反射机制实现工厂设计模式

为什么80%的码农都做不了架构师?>>> ...

weixin_34347651的博客 287

java中的反射机制(通过反射验证单例模式不是jvm安全的)

一、首先我们了解一下类的加载过程: 1.加载:类加载器使用“双亲委托”模型在指定的类路径下搜索相应的class字节码文件,从class字节码文件内容生成类的Class对象。 2.链接:验证字节码文件的合法性,是否能在当前JVM版本环境下运行,为类的静态域分配内存空间,如果当前类引用了其它类,则继续解析对其它类的引用。 3.初始化:执行静态成员变量和静态块的初始化。 我们可以看出,在一个类刚开始进行...

qq_38424588的博客 321

java中的设计模式(二)--工厂方法模式 反射机制

上一次提到了工厂方法模式,经过查阅相关资料,发现可以有改进之处: 改进1.工厂方法 package com.sf.hf; import com.sf.entity.Apple; import com.sf.entity.Banana; import com.sf.j

听雨小楼 2908
上一篇: 反射机制和工厂设计模式结合使用
下一篇: java反射机制模式
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值