java中的反射机制
来源:互联网 发布:云计算与大数据关系 编辑:程序博客网 时间:2024/05/16 04:59
(一)概念
反射:反射是动态的获取类以及类中的成员,并可以调用该类成员。
(二)与以前的比较
以前是有什么类就new什么对象。没有类,给什么类就new什么对象。
以前的写法
Person person=new Person(); person.age=18; System.out.println(person.age);
(三)如何获取呢?
发现java已对字节码文件进行了面熟用的class类完成的。
(四)如何获取一个字节码文件的对象呢?方式一:Object getclass();方法。发现在反射技术里,该方法不合适。反射技术不明确具体类。
Person p=new Person();Class c1=p.getClass();方式二:所有的数据类型都有自己对应的Class对象。表示方式很简单。
每一个数据类型都有一个默认的静态的属性。.class用该属性就可以获取到字节码文件对象。
虽然不用对象调用了,还是要用具体的类调用静态属性。
Class c2=Person.class;
方式三:在class类中的找到了forname方法。通过名称就可以获取对应的字节码文件对象。重点。
Class c3=Class.forname("包名.类名");
//创建对象Object obj=c3.newInstance();
//获取字段Field field=c3.getDeclaredField("age");//反射不好之处就是破坏封装field.setAccessible("true");//给obj对象的age赋值为18field.set(obj,"18");//setSystem.out.println(field.get(0));//get
应用:
//NetBookpackage it.cast.Demo;public class Netbook {public void run(){System.out.println("Netbook working!!");}public void usbNetbook(USB usb){if (usb!=null) {usb.open();usb.close();}}}//USB接口package it.cast.Demo;public interface USB {void open();void close();}//KeyByUsb实现了接口USBpackage it.cast.Demo;public class KeyByUsb implements USB {@Overridepublic void open() {System.out.println("Key open");}@Overridepublic void close() {System.out.println("key close");}}//Main函数package it.cast.Demo;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;public class NetMain {public static void main(String[] args) throws Exception{Netbook netbook=new Netbook();netbook.run();//netbook.usbNetbook(new KeyByUsb());File configFile=new File("usb.properties");if (!configFile.exists()) {configFile.createNewFile();}//读取流跟配置文件关联FileInputStream fis=new FileInputStream(configFile);Properties prop=new Properties();//将流中的数据加载到propprop.load(fis);for (int i = 1; i <=prop.size(); i++) {String className=prop.getProperty("usb"+i);Class class1=Class.forName(className);USB usb=(USB)class1.newInstance();netbook.usbNetbook(usb);}fis.close();}}
阅读全文
0 0
- Java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- Hadoop(十三)分析MapReduce程序
- LIRC命令使用问题
- http你不得不知道的那些事(二)--CSRF
- ZOJ Problem Set
- 如何高效的编写Verlog HDL——菜鸟版
- java中的反射机制
- MySQL日志--二进制日志binlog
- POJ系列——java
- 微信小程序-下拉刷新与加载更多
- Docker部属Nsq集群
- 曲线拟合与绘制
- LINUX查看硬件配置命令
- java多线程学习——(2)通过Callable创建线程
- postman无法正常返回结果Could not get any response