通过反射读取配置文件,来打印图形
2015-03-02 15:13
232 查看
通过反射读取配置文件,来打印图形
反射我也是刚刚接触,不是很会,只在毕向东的视频中看到过,所以有不足的地方,还请指教,并且我听说张孝祥老师有专门讲过反射技术的,不知道哪位兄弟有这方面的资料,请分享一下。一、谈谈我对反射的理解:反射我觉得利于程序的拓展,并且对文件的升级有很好的帮助。这样我们可以省去改源代码的麻烦,并且很多时候,我们根本拿不到源代码。
二、实现java的类:(现在我常用的有2个)
1、Class:它表示正在运行的Java应用程序中的类和接口,Class类是Java反射中最重要的一个功能类,所有获取对象的信息(包括:方法/属性/构造方法/访问权限)都需要它来实现。
2、Method:提供关于类或接口中某个方法信息。调用方法的时候,最常用。
三、java反射编写步骤:(这是我理解的步骤,可能不完善,还请懂得多的童鞋指教)
1、获取一个类的Class对象
Class clazz = Class.forName("cn.itheima.Test");
由于运行方法的时候,需要对象,所以需要创建一个对象
Object obj = clazz.newInstance();
2、调用Class对象中的方法。
Method m = clazz.getMethod(“method”);
3、运行方法
m.invoke(obj);
四、我的程序要求:
1、要求打印不同的图形。
2、使用反射的方式调用。
3、使用配置文件调用。需要打印的图形,只要配置文件里面写了,就需要打印。
五、关于我的一些系统配置
1、我的系统是windows 7 - 64bit。
2、开发环境是eclipse。
3、JDK版本1.7。
六、代码部分:
1、第一部分代码:主要程序部分,代码存放在Reslect.java中。
</pre><p></p><p></p><pre name="code" class="java">/** * 简介:通过反射原理,来打印图形 * 要求:将打印图形的方法写在一个.java文件中(打印图形的方法有很多个),然后通过反射 * 的方式,根据配置文件选择需要显示的图形。 */ package one; import java.io.FileInputStream; import java.util.Properties; import java.lang.reflect.Method; public class Reflect { public static void main(String[] args) { method2(); } /* * 第一种方式调用: 通过程序本身直接调用, */ public static void method1() { // 通过创建对象来调用对象 Triangle t = new Triangle(); Quadrangle q = new Quadrangle(); t.rightAngle(); t.isosceles(); q.rectangle(); q.rhomboid(); q.square(); } /* * 第二种方式调用: 通过反射原理,读取配置文件来调用 */ public static void method2() { try { // 流读取配置文件 FileInputStream fis = new FileInputStream("f:\\config1.txt"); // 创建集合对象 Properties pro = new Properties(); // 使用load方法 pro.load(fis); // 使用循环,读取所以的配置文件中要求显示的图形 for (int i = 0; i < pro.size() / 2; i++) { // 配置文件中的类名 String className = pro.getProperty("className" + i); // 配置文件中的方法名 String methodName = pro.getProperty("methodName" + i); // 反射运用 // 读取字节码的文件对象 Class clazz = Class.forName(className); // 创建对象 Object obj = clazz.newInstance(); // 获取方法 Method m = clazz.getMethod(methodName); // 运行方法 m.invoke(obj); } // 关流 fis.close(); } catch (Exception e) { throw new RuntimeException("读取配置文件失败"); } } }
2、第二部分代码:打印三角形的图形代码,存放在Triangle.java中
package one; /* * 功能:打印三角形图形 */ public class Triangle { // 定义一个显示三角形的方法,直角三角形 public static void rightAngle() { System.out.println("直角三角形"); for(int i=0 ; i<7 ;i++){ for(int j =0;j<=i;j++) System.out.print("* "); System.out.println(); } System.out.println(); } // 定义一个显示三角形的方法,等腰三角形 public static void isosceles(){ System.out.println("等腰三角形"); for (int z = 4; z >= 0; z--) { for (int i = z; i >= 0; i--) System.out.print(" "); for (int j = z; j < 5; j++) System.out.print("* "); System.out.println(); } System.out.println(); } }
2、第三部分代码:打印四边形的图形代码,存放在Quadrangle.java中
package one; /* * 功能:打印四边形图形 */ public class Quadrangle { /* * 功能:打印一个正方形 */ public static void square(){ System.out.println("正方形"); for(int i = 0 ;i<=5;i++){ for(int j=0 ; j<=5 ;j++) System.out.print("* "); System.out.println(); } System.out.println(); } /* * 功能:打印一个长方形 */ public static void rectangle(){ System.out.println("长方形"); for(int i = 0 ;i<=5;i++){ for(int j=0 ; j<=7 ;j++) System.out.print("* "); System.out.println(); } System.out.println(); } /* * 功能:打印一个平行四边形 */ public static void rhomboid(){ System.out.println("平行四边形"); for(int z=5;z>=0;z--){ for(int i=z ;i>=0;i--) System.out.print(" "); for(int j=0;j<5;j++) System.out.print("* "); System.out.println(); } System.out.println(); } }
七:部分截图展示:
1、运行结果:
2、配置文件截图:
相关文章推荐
- 300.33通过读取配置文件方式来使用反射完成实例对象调用方法
- 09_通过读取配置文件的方式来使用反射完成对实例对象方法调用
- Unity Application Block--通过配置文件读取映射
- 通过Propertise读取配置文件
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- 利用java反射读取xml配置文件
- 通过Glib库中的GKeyFile来读取配置文件
- Unity Application Block--通过配置文件读取映射
- ArrayList 与HashSet的比较,及应用反射读取properties配置文件中的数据进行实例化再调用,以及类加载器的使用;还有HashCode的分析,及导致内存泄露,内存溢出的原因之一
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- android应用面试宝典(下);用自定义组件控制循环组件使用bug还添加标志显示答案标志位;通过包名读取配置文件AndroidManifest.xml
- C#中通过读取配置文件动态创建泛型对象
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- 在XPO中怎么通过配置文件来读取数据库链接
- Unity Application Block--通过配置文件读取映射
- 通过Spring读取properties配置文件的信息 Spring 读取properties
- 利用java反射读取xml配置文件
- 利用java反射读取xml配置文件
- Java中通过dom4j读取配置文件实现抽象工厂+反射