码迷,mamicode.com
首页 > 编程语言 > 详细

java 反射的简单应用

时间:2014-10-20 13:05:04      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:io   ar   java   for   sp   on   代码   ef   bs   

用反射的形式来执行以下代码

new String(new StringBuffer("abc"));

 

 public static void main(String[] args) throws Exception {  

 // TODO Auto-generated method stub  

 // 运用反射的方式来获取构造方法new String(new StringBuffer("abc"))  

 // 通过构造方法来执行   

Constructor con = String.class.getConstructor(StringBuffer.class);

  System.out.println(con.newInstance(new StringBuffer("abc")));

  // 通过反射还可以操作成员变量

  ReflactPoint point1 = new ReflactPoint(10, 15);  

 // 通常我们会这样取得ReflactPoint中的String类型变量的值,并且将其中字符b改成a;

  System.out.println(point1.str1.replace(‘b‘, ‘a‘));  

 System.out.println(point1.str2.replace(‘b‘, ‘a‘));  

 System.out.println(point1.str3.replace(‘b‘, ‘a‘));  

 // 现在用反射的方式 应该怎样做呢。   

Field[] fields = point1.getClass().getFields();

  for (Field field : fields) {   

 if (field.getType() == String.class)

{  

   // 获得String变量值    

 String oldValue = (String) field.get(point1);  

   String newValue = oldValue.replace(‘b‘, ‘a‘);

    // 重新将对象赋值    

 field.set(point1, newValue);   

  System.out.println(field.get(point1));  

  }

  }

 // 还可以执行方法 比如说获取ReflactPoint类中每个String变量的第二个字符

  // 现在用反射的方式 应该怎样做呢。

  for (Field field : fields)   

 if (field.getType() == String.class) {     

// 获得String变量值    

 String oldValue = (String) field.get(point1);   

  Method method = String.class.getMethod("charAt", int.class);

    System.out.println(method.invoke(oldValue, 1));  

  }   

    }

}

public class ReflactPoint {

 public int x;  public int y;  public String str1 = "ball";  public String str2 = "basketBall";  public String str3 = "Demo";  //增加一个构造函数  public  ReflactPoint(int pointx,int pointy)  {   this.x = pointx;   this.y = pointy;  } }

 

java 反射的简单应用

标签:io   ar   java   for   sp   on   代码   ef   bs   

原文地址:http://www.cnblogs.com/ChengDavid/p/4036818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!