Java 为什么ArrayList中的值在使用反射调用方法后消失?

Java 为什么ArrayList中的值在使用反射调用方法后消失?,java,arraylist,Java,Arraylist,我有两门课: 子类:前台人员使用两个方法ReadDoctorList(String readLine)和DisplayDoctorList()初始化 父类:base带有readLine方法的类,其中我将方法作为参数传递给,该方法来自类前台 我的想法是逐行读取txt文件,提取一些行并将它们存储在ArrayList中。我可以随时打印出数值但是,如果我从TestClass调用arraylist,它就会变成空的。 您的答复将不胜感激 Output: Tonny Bob Mike tyson The s

我有两门课:

  • 子类:前台人员使用两个方法ReadDoctorList(String readLine)和DisplayDoctorList()初始化

  • 父类:base带有readLine方法的类,其中我将方法作为参数传递给,该方法来自类前台

  • 我的想法是逐行读取txt文件,提取一些行并将它们存储在ArrayList中。我可以随时打印出数值但是,如果我从TestClass调用arraylist,它就会变成空的。

    您的答复将不胜感激

    Output: 
    Tonny Bob
    Mike tyson
    The size is: 0
    
    
    txt file:
        Tonny,Bob,abc,abc,D
        Mike,tyson,abc,abc,D
        Laura,jack,abc,abc,P
        Jimmy,viva,abc,abc,P
    


    公共类基{
    字符串pathusers=“/Users/MacTonish/Users.txt”;
    ArrayList doctorlist=新的ArrayList();
    公共void读线(对象实例、字符串路径、方法)
    抛出IllegalAccessException、IllegalArgumentException、InvocationTargetException{
    试一试{
    File txt=新文件(路径);
    BufferedReader reader=新的BufferedReader(新文件读取器(txt));
    字符串readLine=null;
    而((readLine=reader.readLine())!=null){
    invoke(instance,readLine);//这里有些可疑之处。
    }
    reader.close();
    }抓住(
    IOE除外){
    e、 printStackTrace();
    }
    }
    }
    班级接待员扩展基地{
    public void DisplayDoctorList()抛出NoSuchMethodException、SecurityException、IllegalAccessException、,
    IllegalArgumentException,InvocationTargetException{
    Method=receptionister.class.getMethod(“ReadDoctorList”,String.class);
    readLines(新接待员(),路径用户,方法);
    }
    public void ReadDoctorList(字符串readLine){
    字符串[]标记=readLine.split(“,”);
    if(标记[4]。等于(“D”)){
    添加(标记[0]+“”+标记[1]);
    System.out.println(标记[0]+“”+标记[1]);//打印输出正常。
    }
    }
    }
    
    如果您对您的接待员代码进行以下更改,它应该会起作用

        //readLines(new Receptionist(), pathusers, method);
    
        //Here you are creating a new object but while printing you are using last created Object of ReceptionList
    

    将上述行代码更改为

    readLines(this, pathusers, method);
    

    如果您对您的接待员代码做了以下更改,它应该会起作用

        //readLines(new Receptionist(), pathusers, method);
    
        //Here you are creating a new object but while printing you are using last created Object of ReceptionList
    

    将上述行代码更改为

    readLines(this, pathusers, method);