[Java] 各种反射的用法 →→→→→进入此内容的聊天室

来自 , 2020-05-19, 写在 Java, 查看 95 次.
URL http://www.code666.cn/view/8c6744c9
  1.  import java.lang.reflect.Field;
  2.  public class ReflectTest{
  3.    public static void main(String[] args){
  4.      String str1="abc";
  5.      Class cls1=str1.getClass();
  6.      Class cls2=String.class;
  7.      //Class cls3=Class.forName("java.lang.String");
  8.      System.out.println(cls1==cls2);
  9.     // System.out.println(cls1==cls3);
  10.       System.out.println(cls1.isPrimitive());
  11.       System.out.println(int.class.isPrimitive());
  12.       System.out.println(int.class==Integer.class);
  13.       System.out.println(int.class==Integer.TYPE);
  14.       System.out.println(int[].class.isPrimitive());
  15.       try{
  16.       //获取相对应的字段
  17.       ReflectPoint pt1=new ReflectPoint(3,5);
  18.       Field fieldY=pt1.getClass().getField("y");
  19.       System.out.println(fieldY.get(pt1));
  20.       Field fieldx=pt1.getClass().getDeclaredField("x");
  21.       fieldx.setAccessible(true);
  22.       System.out.println("a"+fieldx.get(pt1));
  23.       changeStringValue(pt1);
  24.       System.out.println(pt1);
  25.       }catch(Exception e2)
  26.       {
  27.           System.out.println(e2);
  28.       }
  29.    }
  30.  
  31.      private static void changeStringValue(Object obj) throws Exception {
  32.          Field[] fields=obj.getClass().getFields();
  33.          for(Field field:fields){
  34.              //field.getType().equals(String.class);
  35.              if(field.getType()==String.class)
  36.              {
  37.                  //以后是取出相应的字段,然后用replace方法下替换字符
  38.                  String oldValue=(String)field.get(obj);
  39.                  String newValue=oldValue.replace('b', 'a');    
  40.                  field.set(obj, newValue);
  41.              }
  42.          }
  43.          
  44.      }
  45.  
  46.  
  47.  }

回复 "各种反射的用法"

这儿你可以回复上面这条便签

captcha