java反射机制模式

【Java】反射机制实现工厂模式和通用编程写法 Java工厂模式和通用编程1. 工厂模式2. 通用编程 1. 工厂模式 开发中有一个非常重要的原则“开闭原则”,对拓展开放、对修改关闭; 工厂模式主要负责对象创建的问题; 可通过反射进行工厂模式的设计,完成动态的对象创建。 public class TestNewInstanceForFile { public static void main(String[] args) thr... 阅读详情


1、JAVA反射机制:

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

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


1.1、Java反射机制的好处:

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




2、获取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;
	}
	   
   
}

3、测试类:

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();
		} 
	}
}


4、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();
		}
	}	
}



5、测试类:

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());

   }
}


6、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();
				}
			  }
		}	
}



7、测试类:

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万+

Apache Paimon-实时数据湖

Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。

m0_57307642的博客 2193

W3school和W3Cschool的区别

W3school和W3Cschool的区别

weixin_54626591的博客 4942

SAP资产按每天折旧功能介绍

注意:此处在计算百分比时将30天作为剩余使用寿命,因为SAPS/4HANA中的计算是通过考虑购置第一年的折旧总天数来进行的。这是因为我在计算总使用寿命时只使用了365天,如果剩余使用寿命大于1年,SAPS/4HANA会将闰年规范化为365天。此功能仅对确定使用寿命或剩余寿命百分比的折旧键有用,如果需要,这种折旧到日的解决方案可以应用于需要每天计算折旧的跨行业(任何国家/行业)。注意:这里在计算百分比时考虑了2天,因为364天已经过期,但目前我们到达2024年,使用寿命为366天。它只会在下一年生效。

yanzibing99的博客 1562

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7617

w3school、w3cschool、w3schools区别与联系

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

xunyan6234的博客 5973

VLA模型(具身智能入门十)

Vision Language Action(VLA)模型VLA模型是机器人领域的“感知-理解-执行”一体化框架,通过Transformer架构融合视觉、语言、动作模态,核心目标是让机器人在自然语言驱动下,自主完成复杂操控任务。其定义的核心在于“跨模态统一”与“具象化行动”——不仅能“看懂”“听懂”,更能“做出正确的动作”,是实现通用机器人智能的关键方向。提供通用序列建模骨架,让视觉、语言、动作能以“序列”形式统一处理;ViT将视觉输入转换为序列特征,提供“看”的能力;LLMs。

weixin_39699362的博客 9943

w3cschool 和 w3schools 的区别

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

wuxiaobingandbob的专栏 1340

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 16万+

uniapp(安卓苹果app端) - 微信小程序分享提示报错“由于不支持的分享类型无法分享到微信“,“由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信“解决办法,uniapp小程序分享失败

uni-app,安卓app,苹果app,手机app端,苹果ios,安卓Android,移动端app,分享,微信分享,微信朋友圈,微信好友,转发,vue2,vue3,App端调用手机的系统分享,微信小程序,分享功能,原生app分享小程序到微信,可分享到微信、朋友圈等,报错,uniapp分享报错由于不支持的分享类型无法分享到微信,未审核应用,uniApp安卓苹果app报错由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信,微信appid,已经配置了,还是报错,无法解决,一直提示,APP_ID错误,打包

✅ 精选推荐文章 5514

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

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

小草的博客 7245

Playwright实战:打造绕过全维度前端反爬的无头浏览器爬虫(2026实战版)

Playwright绕过前端反爬的核心是模拟真实:真实的设备指纹、真实的行为轨迹、真实的网络请求;2025年前端反爬的核心检测维度是设备指纹+行为轨迹+网络请求,三者缺一不可;实战中需重点关注WebGL/Canvas指纹模拟、行为随机性、请求头完整性,这是绕过反爬的关键;性能优化需以“不触发反爬”为前提,优先选择浏览器复用、资源拦截,而非无限制并发。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2097

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

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

小草的博客 3298

基于YOLOv26的智能农业无人机巡检系统

本文提出了一种基于YOLOv26的智能农业无人机巡检系统。系统采用模块化设计,包含数据采集、预处理、目标检测、图像拼接、分析决策和部署控制六大核心模块。无人机搭载多光谱相机、RGB相机和热红外相机进行农田数据采集,通过YOLOv26实现作物病虫害、杂草及灌溉设备的检测。系统采用PyTorch、OpenCV等技术栈,支持无人机自动路径规划和多传感器数据采集,并包含数据增强和预处理功能。该系统可有效提升农业巡检效率,为精准农业提供智能化解决方案。

一键难忘的博客 810

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java反射机制,Java代理模式

Java反射机制,Java代理模式

XiaoArea的博客 412

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

abguorui0928的专栏 1212

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

qq_35197520的博客 344

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

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

weixin_34902502的博客 244

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反射机制、工厂模式与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中的设计模式(二)--工厂方法模式 反射机制

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

听雨小楼 2908

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

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

qq_38424588的博客 321
上一篇: java反射机制模式
下一篇: DAO设计模式之禅之数据库万能查询操作
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值