簡體   English   中英

如何通過反射 API 在 Java 中獲取已處理的對象並為其設置新值?

[英]How to get processed object and set it a new value to it in Java via Reflection API?

我正在搜索和學習更多關於它的 Java 反射 API。 但是我無法在其中找到我的問題解決方案的某些部分。 問題是,我只想更改用戶分配的對象的一個​​值。 這是我進一步觀察的代碼;

    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)   
       }
    }

如果你們能提供幫助,我會很高興。 提前致謝。

Method setName = Tire.class.getDeclaredMethod("setName", String.class);
setName.invoke(a.t, "new value");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM