0

如何使用反射来确定将哪个变量传递给方法?

例子

public class ExampleClass {

  // class member variables
  ArrayList<String> strArrayOne;
  ArrayLIst<String> strArrayTwo;

  //constructor
  public ExampleClass()[
    strArrayOne = new ArrayList<String>();
    strArrayTwo = new ArrayList<String>();
  } 

   // create instance of nested class passing in the required ArrayList in constructor
   NestedInnerClass testInstance = new NestedInnerClass(strArrayOne);

  // nested inner class
  public class NestedInnerClass{

    // class member variable
    ArrayList<String> memberArray = new ArrayList<String>();

    // constructor
    public NestedInnerClass(ArrayList<String> inputArray){
      memberArray = inputArray;

      // put code here to determine with reflection which of the
      // two outer class variables is being passed in strArrayOne or strArrayTwo?
    }

  } // end nested inner class

} // end outer class
4

1 回答 1

1

不需要反思来做到这一点。检查传递的数组和封闭类的字段是否相等就足够了:

if (Arrays.equals(inputArray, ExampleClass.this.strArrayOne)) {
  // first one has been passed
}

if (Arrays.equals(inputArray, ExampleClass.this.strArrayTwo)) {
  // second one has been passed
}
于 2013-07-11T13:08:04.573 回答