`

41、反射的应用

阅读更多

一、反射的应用-->实现框架功能

 

  • 框架,比如:
  • 我做房子卖给用户住,由用户自己安装门窗和空调
  • 我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中
  • 框架与工具有区别,工具类被用户的类调用,而框架则是调用用户提供的类
  • 框架要解决的核心问题,比如:
  • 我在写框架(房子)的时候,你这个用户可能还在上小学
  • 还不会编程呢,我写的框架程序怎样能调用到你以后写的类(门窗)呢?
  • 因为在写程序时无法知道要被调用的类名,
  • 所以,在程序中无法直接new某个类的实例对象,就需要用反射方式来做

二、综合案例

 

    采用配置文件加反射的方式创建ArrayList和HashSet的实例对象,比较运行结果的差异

 

import java.util.*;
import java.io.*;

public class HashCodeTest {

	public static void main(String[] args) throws Exception {
		InputStream is = new FileInputStream("config.properties");
		Properties props = new Properties();
		props.load(is);
		String className = props.getProperty("className");
				
		Collection col = (Collection) Class.forName(className).newInstance();
		
		Student stu1 = new Student("zhangsan",20);
		Student stu2 = new Student("lisi",18);
		Student stu3 = new Student("wangwu",25);
		Student stu4 = new Student("zhangsan",20);
		col.add(stu1);
		col.add(stu2);
		col.add(stu3);
		col.add(stu4);
		col.add(stu1);

		stu1.age = 15;
		
		System.out.println(col.size());
	}
}
class Student
{
	String name;
	int age;
	Student(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	public String toString()
	{
		return name+":"+age;
	}
}

 

分享到:
评论

相关推荐

    C#反射的一些应用

    对于反射贫道也是很陌生的,所以趁现在有时间就把反射看了一下,记下笔记!!!反射的定义:反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型...“外部调用的动态库”)加载程

    超声波语音测距系统在车辆避障中的应用

    发射电路在单片机控制下产生特定频率(通常为40kHz)的超声波脉冲,这些脉冲在空气中传播并遇到障碍物后反射回来,被接收电路捕获。通过计算发射与接收时间差,结合声波在空气中的传播速度(约为331.41m/s + t/273m/...

    G41 主板 Altium PCB 文件

    G41主板是基于Intel G41芯片组的一款常见主板,广泛应用于个人计算机中。Altium Designer是一款强大的PCB(印制电路板)设计软件,用于创建、编辑和管理电子硬件设计。在本G41主板Altium PCB文件中,我们可以深入...

    (应用光学)第九章典型光学系统设计.pdf

    在实际应用中,望远镜物镜的设计有多种结构形式,如折射式望远物镜(双胶、双分离、双单/单双、三分离)适合小口径,反射式望远镜物镜则在大口径和宽波长范围内具有优势,如牛顿系统、格里高里系统和卡塞格林系统。...

    传感器原理与应用技术

    1. **超声波传感器的工作原理**:超声波传感器发射超声波脉冲,并接收反射回来的信号,通过测量信号往返的时间来计算距离。 2. **倒车防撞系统的工作原理**:通常使用超声波传感器来监测车辆后方的距离,当距离过...

    jdk-6u41-windows-x64.exe文件.zip

    3. **动态代理**:增加了对动态代理的支持,允许在运行时创建接口实现类,增强了反射功能。 4. **改进的脚本语言支持**:JDK6开始支持JavaScript和其他脚本语言,通过JSR 223(Scripting for the Java Platform)...

    openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

    对于Linux操作系统,OpenJDK 8u41-b04提供了针对64位架构的优化,确保在Linux环境下运行Java应用时的高效性能。该版本包含以下主要组件: - `bin`目录:包含了Java可执行文件,如`java`、`javac`(Java编译器)、`...

    MT41J512M4/MT41J256M8/MT41J128M16

    - **确定性输出驱动**:数据、strobes和mask信号均具备名义和动态的on-diode termination (ODT),有助于减少信号反射和噪声干扰。 - **可编程的CAS READ延迟(CL)**:用户可以通过编程设定CAS READ的延迟时间,从而...

    openjdk-8u41-b04-windows-i586-14_jan_2020.zip

    此外,还增强了反射API,提升了性能,并引入了默认方法,使得接口可以拥有非抽象方法的实现,增强了多态性。 在压缩包中的“java-se-8u41-ri”文件夹,通常包含了OpenJDK的运行时环境(Runtime Image),包括JRE...

    chpt5四川大学工程光学共41页.pdf.zip

    这份41页的PDF文档可能涵盖了光学的基础理论、实验方法以及实际应用。 【描述】描述中的"chpt5四川大学工程光学共41页.pdf.zip"进一步确认了这是一个压缩文件,包含了一个41页的PDF文档,专门讨论工程光学的第五个...

    d3dx9_41.dll

    《深入解析d3dx9_41.dll:游戏与图形编程的关键组件》 d3dx9_41.dll,这是一个在计算机科学特别是游戏开发领域...而对于用户来说,了解如何处理与d3dx9_41.dll相关的错误,能帮助他们顺利地运行那些需要它的应用程序。

    兽用B-型超声波在奶牛繁殖生产工作中的应用.pdf

    兽用B-型超声波技术在奶牛繁殖生产中扮演了重要的...综上所述,兽用B-型超声波在奶牛繁殖生产中的应用包括早期妊娠诊断和胎龄测定,它不仅提高了诊断的准确性,也优化了牧场管理,为奶牛养殖业带来了显著的经济效益。

    地质雷达在混凝土面板脱空缺陷探测中的应用

    梅河高速公路作为连接珠三角地区和粤东山区的重要交通线路,全长118.41公里,采用双向四车道混凝土路面结构。自2005年10月通车以来,由于地处山岭重丘区,复杂的地质条件导致部分路段出现沉降脱空现象,进而引发了...

    高考地理总复习第十二单元地理环境与区域发展课时41地理信息技术的应用学案新人教版.docx

    它可以广泛应用于资源调查、环境监测、自然灾害防御等领域,通过接收和分析地表物体反射或散发的电磁波信息,来获取地表特征。 3. 全球定位系统:全球定位系统(GPS)是一个全球范围内的实时导航和定位系统。它由三...

    科创板化工新材料行业之四:长阳科技(A19113),全球光学反射膜行业龙头,光学基膜逐步实现进口替代-1013-华创证.pdf

    反射膜、背板基膜、光学基膜等特种功能膜广泛应用于液晶显示、半导体照明、光伏等领域。预计2022年全球液晶显示用反射膜片将达到2.55亿平方米。光伏产业日益成熟,背板基膜需求迎来拐点。LED照明渗透率不断提升,...

    X3DAudio1_6.dll d3dx9_41.dll X3DAudio1_6.dll文件

    它为游戏和多媒体应用提供了高级的环绕声功能,如声音定位、反射和衰减等,使玩家能够根据声音判断游戏中的对象位置,增强游戏的沉浸感。当这个文件缺失时,可能会导致依赖它的游戏或程序无法正常运行,出现错误提示...

    电磁场理论(第七章)2013_new_6_41

    《电磁场理论(第七章)2013_new_6_41》章节主要探讨了电波传播理论基础,特别是卫星通信中电离层和大气层对信号的影响以及相应的修正方法。电波传播是无线通信、遥感、定位和环境监测等领域不可或缺的基础,因为...

    java41-43

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。在这个"java41-43"的学习资源中,我们似乎聚焦于Java语言的一些核心概念和高级特性,可能涵盖从基础到进阶的多个主题。由于提供的信息...

Global site tag (gtag.js) - Google Analytics