java中的反射机制
来源:互联网 发布:php 数组按某一值排序 编辑:程序博客网 时间:2024/06/12 19:54
java反射机制:
java反射机制是在运行状态中,对于任意一个类(class文件),都能知道这个类的方法和属性。对于任何一个对象,都能调用它的任意一个属性和方法。
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
(动态获取类的信息,就是反射,也可以理解为对类的解剖)
练习:
电脑类
package com.reflect;public class Mainboard {public static void run(){System.out.println("Mainboard run...");}public static void userPCI(PCI p){if(p!=null){p.open();p.close();}}}
声卡类
package com.reflect;public class SoundCard implements PCI{public void open(){System.out.println("sound open");}public void close(){System.out.println("sound close");}}
package com.reflect;public class NetCard implements PCI{@Overridepublic void open() {System.out.println("NetCat open");}@Overridepublic void close() {System.out.println("NetCard close");}}
内容:
pci1=com.reflect.SoundCard
测试类
package com.reflect;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Properties;public class ReflectTest {public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {Mainboard mb = new Mainboard();mb.run();//获取class文件。在内部实现创建对象的动作File file = new File("pci.properties");Properties p = new Properties();FileInputStream fis = new FileInputStream(file);//把流加载到集合中p.load(fis);for(int i =0;i<p.size();i++){//获取这个类名String pciname=p.getProperty("pci"+(i+1));//加载这个类Class clazz = Class.forName(pciname);//实例化PCI pci =(PCI)clazz.newInstance();mb.userPCI(pci);}fis.close();}}
执行结果:
如果往电脑里加入网卡的话,就创建一个网卡 ,在配置文件中加入网卡的名字就可以
网卡类
package com.reflect;public class NetCard implements PCI{@Overridepublic void open() {System.out.println("NetCat open");}@Overridepublic void close() {System.out.println("NetCard close");}}
配置文件加入类名
再次运行结果:
阅读全文
0 0
- Java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- 二进制转换为八进制或十六进制
- jQuery 7 关于css操作
- 1013. 数素数 (20)
- 《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器
- RecyclerView的使用<注:ListView与GridView 的升级版>
- java中的反射机制
- 平常水题
- Struts2 源码分析
- 数据压缩实验四
- SVM的matlab实现——CVX工具箱应用
- bzoj 3112: [Zjoi2013]防守战线 单纯形
- 计网笔记之打洞机制和socket编程
- 【struts】struts导入源码和生成API文档
- Struts2 源码分析——拦截器的机制