如何使用JAVA反射/JAVA反射实例

2025-05-16 02:17:04

1、常用举例:package com.test.instancedemo;class X{};public class GetClassDemo02{public static void main(String args[]){Class<?> c1 = null ;// 指定泛型Class<?> c2 = null ;// 指定泛型Class<?> c3 = null ;// 指定泛型try{// 以下的操作形式是在开发中最常用的一种形式c1 = Class.forName("com.test.instancedemo.X") ;}catch(ClassNotFoundException e){e.printStackTrace() ;}c2 = new X().getClass() ;// 通过Object类中的方法实例化c3 = X.class ;// 通过类.class实例化System.out.println("类名称:" + c1.getName()) ;// 得到类的名称System.out.println("类名称:" + c2.getName()) ;// 得到类的名称System.out.println("类名称:" + c3.getName()) ;// 得到类的名称}};

如何使用JAVA反射/JAVA反射实例

2、反射如何操作对象:package com.test.instancedemo ;class Person{private String name ;// name属性private int age ;// age属性public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public String toString(){// 覆写toString()方法return "姓名:" + this.name + ",年龄:" + this.age ;}};public class InstanceDemo01{public static void main(String args[]){Class<?> c = null ;// 声明Class对象try{c = Class.forName("com.test.instancedemo.Person") ;}catch(ClassNotFoundException e){e.printStackTrace() ;}Person per = null ;// 声明Person对象try{per = (Person)c.newInstance() ;// 实例化对象}catch(Exception e){e.printStackTrace() ;}per.setName("LXY") ;// 设置姓名per.setAge(30) ;// 设置年龄System.out.println(per) ;// 内容输出,调用toString()}};

如何使用JAVA反射/JAVA反射实例

3、如何使用反射包package com.test.instancedemo.instancedemo ;import java.lang.reflect.Constructor ;// 导入反射机制包class Person{private String name ;// name属性private int age ;// age属性public Person(String name,int age){this.setName(name) ;this.setAge(age);}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public String toString(){// 覆写toString()方法return "姓名:" + this.name + ",年龄:" + this.age ;}};public class InstanceDemo03{public static void main(String args[]){Class<?> c = null ;// 声明Class对象try{c = Class.forName("com.test.instancedemo.Person") ;}catch(ClassNotFoundException e){e.printStackTrace() ;}Person per = null ;// 声明Person对象Constructor<?> cons[] = null ;cons = c.getConstructors() ;try{per = (Person)cons[0].newInstance("LXY",30) ;// 实例化对象}catch(Exception e){e.printStackTrace() ;}System.out.println(per) ;// 内容输出,调用toString()}};

如何使用JAVA反射/JAVA反射实例

4、使用实例1package com.test.instancedemo.factorydemo ;interface Fruit{public void eat() ;// 吃水果}class Apple implements Fruit{public void eat(){// 覆写eat()方法System.out.println("** 吃苹果");}};class Orange implements Fruit{public void eat(){System.out.println("** 吃橘子") ;}};class Factory{public static Fruit getInstance(String className){Fruit fruit = null ;try{fruit = (Fruit)Class.forName(className).newInstance() ;}catch(Exception e){e.printStackTrace() ;}return fruit ;}};public class FactoryDemo01{public static void main(String args[]){Fruit f = Factory.getInstance("com.test.instancedemo.factorydemo.Apple") ;if(f!=null){f.eat() ;}}};

如何使用JAVA反射/JAVA反射实例

5、使用实麻质跹礼例2package com.test.instancedemo.factorydemo ;import jav锾攒揉敫a.util.Properties ;import java.io.File ;import java.io.FileOutputStream ;import java.io.FileInputStream ;interface Fruit{public void eat() ;// 吃水果}class Apple implements Fruit{public void eat(){// 覆写eat()方法System.out.println("** 吃苹果");}};class Orange implements Fruit{public void eat(){System.out.println("** 吃橘子") ;}};class Init{public static Properties getPro(){Properties pro = new Properties() ;File f = new File("d:\\fruit.properties") ;// 找到属性文件try{if(f.exists()){// 文件存在pro.load(new FileInputStream(f)) ;// 读取属性}else{pro.setProperty("apple","com.test.instancedemo.factorydemo.Apple") ;pro.setProperty("orange","com.test.instancedemo.factorydemo.Orange") ;pro.store(new FileOutputStream(f),"FRUIT CLASS") ;}}catch(Exception e){}return pro ;}};class Factory{public static Fruit getInstance(String className){Fruit fruit = null ;try{fruit = (Fruit)Class.forName(className).newInstance() ;}catch(Exception e){e.printStackTrace() ;}return fruit ;}};public class FactoryDemo02{public static void main(String args[]){Properties pro = Init.getPro() ;Fruit f = Factory.getInstance(pro.getProperty("apple")) ;if(f!=null){f.eat() ;}}};

如何使用JAVA反射/JAVA反射实例

6、获取一个对拇峨镅贪象的方法package com.test.instancedemo.factorydemo ;import java.lang.reflect.Met茑霁酌绡hod ;// 导入构造方法的包import java.lang.reflect.Modifier ;// 导入构造方法的包public class GetMethodDemo{public static void main(String args[]){Class<?> c1 = null ;// 声明Class对象try{c1 = Class.forName("com.test.instancedemo.factorydemo.Person") ;// 实例化对象}catch(ClassNotFoundException e){e.printStackTrace() ;}Method m[] = c1.getMethods() ;// 取得全部方法for(int i=0;i<m.length;i++){Class<?> r = m[i].getReturnType() ;// 得到返回值类型Class<?> p[] = m[i].getParameterTypes() ;// 取得全部参数的类型int xx = m[i].getModifiers() ;// 得到修饰符System.out.print(Modifier.toString(xx) + " ") ;// 输出修饰符System.out.print(r + " ") ;System.out.print(m[i].getName()) ;System.out.print("(") ;for(int j=0;j<p.length;j++){System.out.print(p[j].getName() + " " + "arg" + j) ;if(j<p.length-1){System.out.print(",") ;}}Class<?> ex[] = m[i].getExceptionTypes() ;// 取出异常if(ex.length>0){System.out.print(") throws ") ;}else{System.out.print(")") ;}for(int j=0;j<ex.length;j++){System.out.print(ex[j].getName()) ;if(j<p.length-1){System.out.print(",") ;}}System.out.println() ;}}};

如何使用JAVA反射/JAVA反射实例
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:49
  • 阅读量:83
  • 阅读量:35
  • 阅读量:42
  • 阅读量:27
  • 猜你喜欢