Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 例如,如何使用反射查找类中使用的ArrayLIst的类成员名称?_Java_Android_Reflection_Inner Classes - Fatal编程技术网

Java 例如,如何使用反射查找类中使用的ArrayLIst的类成员名称?

Java 例如,如何使用反射查找类中使用的ArrayLIst的类成员名称?,java,android,reflection,inner-classes,Java,Android,Reflection,Inner Classes,如何使用反射来确定将哪个变量传递到方法中 范例 public class ExampleClass { // class member variables ArrayList<String> strArrayOne; ArrayLIst<String> strArrayTwo; //constructor public ExampleClass()[ strArrayOne = new ArrayList<String>();

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

范例

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
公共类示例类{
//类成员变量
ArrayList strArrayOne;
strArrayTwo;
//建造师
公共示例类()[
strArrayOne=新的ArrayList();
strArrayTwo=新的ArrayList();
} 
//在构造函数中创建传入所需ArrayList的嵌套类的实例
NestedinerClass testInstance=新的NestedinerClass(strArrayOne);
//嵌套内部类
嵌套的公共类NestedinerClass{
//类成员变量
ArrayList memberArray=新的ArrayList();
//建造师
公共嵌套类(ArrayList inputArray){
memberArray=输入阵列;
//将代码放在这里,通过反射确定
//两个外部类变量正在Strarayone或Straraytwo中传递?
}
}//结束嵌套的内部类
}//结束外部类

不需要反射就可以了。检查传递的数组和封闭类字段是否相等就足够了:

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

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

为什么要反射?
inputArray==strArrayOne
应该足够了。此外,为什么不在内部类方法中使用实际的成员变量呢?这些都是很好的问题,我想这项工作有比反射更好的工具。