`
u010570991
  • 浏览: 7363 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

“黑马程序员”反射机制

 
阅读更多



 android培训java培训期待与您交流!!!

 本篇主要介绍反射的原理及应用



 

下面通过一个例子来体会反射的好处。

1.首先定义一个PCI接口,里面规定了open和close方法

public interface PCI {
	
	public void open();
	public void close();

}

 2.定义一个实现类NetCard(网卡),实现PCI接口

public class NetCard implements PCI {

	@Override
	public void open() {
		System.out.println("net open");
	}

	@Override
	public void close() {
		System.out.println("net close");
	}

}

3定义一个实现类SoundCard实现PCI接口

public class SoundCard implements PCI {
	public void open(){
		System.out.println("sound open");
	}
	public void close(){
		System.out.println("sound close");
	}

}

4.编写主板类

 

 

 

public class Mainboard {

	public void run() {
		System.out.println("main board run....");
	}

	public void usePCI(PCI p) {//PCI p = new SouncCard();
		if (p != null) {
			p.open();
			p.close();
		}
	}
}

 

5.编写测试类。

开始调用NetCARD 和SOUNDCARD工作,因为通过反射实现,所以需要读取配置信息。严谨高效的做法是使用XML文件,这里使用Properties集合保存信息。

PCI.properties配置信息中的数据必须是这样的

pci1=cn.itcast.reflect.test.SoundCard
pci2=cn.itcast.reflect.test.NetCard

import java.io.File;
import java.io.FileInputStream;

import java.util.Properties;


/*
 * 电脑运行。 
 */
public class ReflectTest {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {

		Mainboard mb = new Mainboard();
		mb.run();
		//每次添加一个设备都需要修改代码传递一个新创建的对象
//		mb.usePCI(new SoundCard());
		//能不能不修改代码就可以完成这个动作。 
//		不用new来完成,而是只获取其class文件。在内部实现创建对象的动作。 
		
		File configFile = new File("pci.properties");
		
		Properties prop = new Properties();
		FileInputStream fis = new FileInputStream(configFile);
		
		prop.load(fis);
		
		for(int x=0; x<prop.size(); x++){
			
			String pciName = prop.getProperty("pci"+(x+1));
			
			Class clazz = Class.forName(pciName);//用Class去加载这个pci子类。 
			
			PCI p = (PCI)clazz.newInstance();
			
			mb.usePCI(p);
		}
		
		fis.close();
		
		
	}

}

 

  • 大小: 268.2 KB
分享到:
评论

相关推荐

    黑马程序员入学面试题

    暴力反射是一种非常规的反射技术,它可以绕过Java的安全限制,强制访问私有成员和类,这在某些情况下可能会带来安全风险。 #### 14. 反射获取字节码对象方式、创建对象的两种方式 - **获取字节码对象**:可以通过...

    黑马程序员java面试宝典 完整版PDF.rar

    《黑马程序员Java面试宝典》是一本专门为Java开发者准备的面试指南,包含了广泛而深入的Java技术知识,以及面试过程中可能会遇到的各种问题。这本书的完整版PDF提供了丰富的学习材料,帮助求职者提升自己的技术水平...

    黑马程序员入学Java知识——精华总结

    含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,

    黑马程序员_Java基础辅导班教程课件[第01期]第13天

    在"黑马程序员_Java基础辅导班教程课件[第01期]第13天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java开发的基本技能。第13天的课程通常会涵盖上一天(第12天)所学...

    黑马程序员------类加载器学习注意点

    本文将主要围绕“黑马程序员------类加载器学习注意点”展开,探讨一些关键知识点。 首先,我们需要理解类加载器的基本工作原理。在Java中,类加载过程包括加载(Loading)、验证(Verification)、准备...

    黑马程序员java基础试题、笔记

    想进黑马必须掌握的重点知识这部分,很可能是"黑马程序员"培训课程的核心要求,可能包括高级主题,如JVM工作原理、垃圾回收机制、Spring框架、MyBatis、数据库设计与SQL等,这些都是Java开发者必备的专业技能。...

    黑马程序员面试宝典(java)2018版

    - 反射机制:Class类的使用,获取类的信息,创建对象,调用方法。 - 动态代理:了解JDK动态代理和CGLIB动态代理的原理和应用。 9. **设计模式** - 单例模式:了解懒汉式、饿汉式、双重检查锁定等单例实现方式。 ...

    黑马程序员入学Java知识——精华总结.doc

    程序员编写代码,计算机执行这些代码,最终产生预期的结果。 2. **Java语言的特点**: - **简单性**:Java简化了C++的一些复杂特性,如指针,使得初学者更容易上手。 - **面向对象**:Java强调类和对象,支持封装...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--aidl之结合反射获取应用缓存大小等空间占用 |--aidl调用系统service未公开的方法挂电话 |--aidl调用系统未公开的方法代码示例2 |--android dp和px之间转换 |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |...

    黑马程序员----泛型与反射的小运用

    总结来说,泛型提供了一种编译时的类型安全机制,而反射则提供了运行时对类元数据的操作能力。两者结合使用,可以帮助开发者编写更加灵活、安全的代码,特别是在处理动态类型和框架设计时。理解并熟练掌握这两者,...

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...

    黑马程序员《Java自学宝典》源代码

    9. **反射**:理解反射机制,能够动态地获取类的信息和调用方法。 10. **网络编程**:学习Socket编程,包括TCP和UDP通信,理解服务器端和客户端的实现。 11. **Java API**:熟悉Java提供的各种标准库,如Math类、...

    Java基础案例教程.rar

    本教程出自知名教育机构黑马程序员,该机构以其深入浅出的教学方式和实用的案例著称。 在本教程中,你将学习到以下关键知识点: 1. **Java环境搭建**:首先,你需要了解如何下载和安装Java Development Kit (JDK)...

    2018年最新传智博客黑马程序员JavaEE49期全套视频,亲测有效

    - **Java高级特性**:如集合框架、异常处理、反射机制、泛型等。 - **数据库操作**:SQL语言基础、JDBC编程、ORM框架(MyBatis/Hibernate)的应用。 - **Web开发**:HTML/CSS/JavaScript基础知识,Servlet/JSP开发...

    2018-2019年黑马最新版Java程序员面试宝典+题库pdf

    7. **反射机制**:了解反射的基本原理,如何通过反射创建对象、调用方法、获取字段值,以及动态代理。 8. **网络编程**:Socket编程基础,TCP和UDP的区别,以及HTTP协议的理解。 9. **设计模式**:学习常见的设计...

    Java基础案例教程(第2版)_PPT.zip

    16. **反射机制**:反射允许在运行时动态访问和修改类的信息,是Java的高级特性,常用于插件开发、元编程等场景。 17. **泛型**:泛型引入后,可以在编译时检查类型安全,减少强制类型转换,提升代码的可读性和可...

    黑马java教程知识点笔记整理

    【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。

    Java基础、面试等综合练习

    - **反射机制**:理解并运用Class类,动态加载类和创建对象。 2. **Java SE进阶**: - **泛型**:使用泛型提高代码复用性和安全性。 - **枚举与注解**:理解枚举的特性,掌握自定义注解及其元注解的运用。 - **...

Global site tag (gtag.js) - Google Analytics