java反射机制基础
来源:互联网 发布:家用动感单车推荐知乎 编辑:程序博客网 时间:2024/05/11 20:10
//LearnReflect.javapackage cn.itcast.reflect;import java.io.File;import java.io.FileInputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Properties;public class LearnReflect {/*** @param args* @throws Exception * @throws InstantiationException */public static void main(String[] args) throws InstantiationException, Exception {MainCard man=new MainCard();/** 原来旧的方法*/man.harddisk();man.memory();/** 扩展后加入的类和方法*///读取配置文件File file=new File("pci.properties");FileInputStream fis=new FileInputStream(file);Properties properties=new Properties();/** 加载流*/properties.load(fis);String pciname=null;/** 循环读取配置文件的信息*/for(int i=1;i<=properties.size();i++){pciname=properties.getProperty("pci"+i);OutRun(man, pciname);}fis.close();}/** 扩展类方法的使用*/private static void OutRun(MainCard man, String pciname) throws Exception {Class clazz=Class.forName(pciname);PCI pci=(PCI)clazz.newInstance();/** 使用实现了PCI借口的类的方法*/man.runPCI(pci);/** 有参函数的的调用*/Method method=clazz.getMethod("hello", String.class);/** 创建一个默认的构造函数对象*/Object obj=clazz.newInstance();/** 函数的调用和参数的注入*/method.invoke(obj, "Hello World!");//设置字段的值Field field=clazz.getDeclaredField("name");field.set(obj, "张三");/*还有很多* 1、获取字段*指定字段(无论是public,protect或private)的获取和赋值*get.getDeclaredField("name")*get.getDeclaredFields();*还有get.getFiled("name");获取指定public的字段*还有get.getFileds();获取所有public的字段*2、获取方法*指定方法(无论是public,protect或private)的获取和赋值*get.getDeclaredMethod("name");*获取所有的方法(无论是public,protect或private)*get.getDeclaredMethods();*还有get.getMethod("name");获取指定public的字段*还有get.getMethods();获取所有public的字段*3、获取构造函数**getDeclaredConstructor(Class<?>... parameterTypes)*/}}//MainCard.javapackage cn.itcast.reflect;public class MainCard {public void harddisk(){System.out.println("harddisk running ....");}public void memory(){System.out.println("memery running.....");}public void runPCI(PCI pci){pci.sound();pci.look();}}//SoundCard.javapackage cn.itcast.reflect;public class SoundCard implements PCI{private String name;public String heheString;@Overridepublic void look() {System.out.println("look running....");}@Overridepublic void sound() {System.out.println("sound running....");}public void hello(String string){System.out.println("Say" +string+ "to you !");}}//pci.properties配置文件pci1=cn.itcast.reflect.SoundCard
0 0
- java反射机制基础
- java基础:反射机制
- JAVA基础--反射机制
- 【JAVA基础】反射机制
- 【java基础】Java反射机制
- 【java基础】java反射机制
- java反射机制基础详解
- java反射机制基础详解
- java基础篇---反射机制
- java反射机制基础示例
- Java基础—反射机制
- java反射机制之基础
- java反射机制之基础
- Java反射机制基础详解
- Java基础_13_反射机制
- java反射机制基础详解
- java反射机制基础详解
- Java反射基础机制简介
- What's the difference of hash table and binary tree?
- 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题
- Creating a Simple CRUD App With Yii2 用 Yii2 创建一个简单的 CRUD (增删改查)应用
- Python发送邮件
- 表达树
- java反射机制基础
- Sqlite3 导出数据至文件
- 第三次。2014、1、11
- C之I/O
- POJ-3295-Tautology-2013-12-04 20:44:18
- ThoughtWorks郑大晔校的一天——最后的礼物
- 黑马程序员------------------多线程
- iOS Objective-C Json解析
- 黑马程序员-------面向对象-------