首页 > 代码库 > java 反射的简单应用

java 反射的简单应用

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

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 = http://www.mamicode.com/(String) field.get(point1);

   String newValue = http://www.mamicode.com/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 = http://www.mamicode.com/(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 反射的简单应用