0
我有两个类:为什么ArrayList中的值在使用反射调用方法后消失?
子类:接待员类两种方法ReadDoctorList(字符串的readLine)和DisplayDoctorList()。
父类:基类与ReadLine方法,其中我通过的方法作为参数,该方法是从类接待员。
我的想法是逐行读取txt文件,并提取一些行并将它们存储在ArrayList中。我可以即时打印出价值。 然而,数组列表变为空如果我从TestClass中调用它。
您的回答将不胜感激!
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
public class TestClass {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Receptionist obj = new Receptionist();
obj.DisplayDoctorList();
System.out.println("The size is: " + obj.doctorlist.size());
}
}
public class Base {
String pathusers = "/Users/MacTonish/users.txt";
ArrayList<String> doctorlist = new ArrayList<String>();
public void readLines(Object instance, String path, Method method)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
try {
File txt = new File(path);
BufferedReader reader = new BufferedReader(new FileReader(txt));
String readLine = null;
while ((readLine = reader.readLine()) != null) {
method.invoke(instance, readLine); //something is fishy here.
}
reader.close();
} catch (
IOException e) {
e.printStackTrace();
}
}
}
class Receptionist extends Base {
public void DisplayDoctorList() throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Method method = Receptionist.class.getMethod("ReadDoctorList", String.class);
readLines(new Receptionist(), pathusers, method);
}
public void ReadDoctorList(String readLine) {
String[] token = readLine.split(",");
if (token[4].equals("D")) {
doctorlist.add(token[0] + " " + token[1]);
System.out.println(token[0] + " " + token[1]); //Print out is ok.
}
}
}