代码之家  ›  专栏  ›  技术社区  ›  Yekta Sarıoğlu

如何通过反射API在Java中获取被处理对象并为其设置新值?

  •  -2
  • Yekta Sarıoğlu  · 技术社区  · 7 年前

        public class Car{
              private String model_name;
              private int horsepower;
              public Tire t;
    
              public void setModelName(String s){
                  model_name = s;
              }
    
              public void setHorsePower(int i){
                  horsepower = i;
              }
    
              public String getModelName(){
                  return model_name;
              }
    
              public int getHorsePower(){
                  return horsepower;
              }
        }
    
        // Tire.java
    
        public class Tire{
              private String name;
    
              public void setName(String s){
                  name = s;
              }
    
              public String getName(){
                  return name;
              }
        }
    
        // Main class
    
        public class Main{
           public static void main(String []args){
               Car a = new Car();
               a.setModelName("Mustang 67");
               a.setHorsePower(700);
               a.t = new Tire("DummyBrand");
               Class c = a.getClass();
               Field []f = c.getDeclaredFields();
               for(int i = 0; i < f.length; i++){
                   if(f[i].getType().getSimpleName().toString().matches("Tire"){
                       // How to change a object's t field's name variable? 
                   }
               }
               System.out.printline(a.getModelName)   
           }
        }
    

    如果你们能帮忙,我会很高兴的。提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Nandagopal Sekar    7 年前
    Method setName = Tire.class.getDeclaredMethod("setName", String.class);
    setName.invoke(a.t, "new value");
    
    推荐文章