如何把 activity 实例放到一个泛型为 string 的 arraylist 中去

Q:如何把 Activity 实例放到一个泛型为 StringArrayList 中去

这一个题目考察的是泛型擦除的概念

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

private List<String> strList;
private void () {
strList = new ArrayList<>();
strList.add("你好");
try {
//获取所有不包括基类的成员变量
Field strField = getClass().getDeclaredField("strList");
strField.setAccessible(true);
List list = (List) strField.get(this);//通过反射拿到 strList
list.add(this);
Log.d(TAG, "onCreate: " + list.size());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Log.d(TAG, "onCreate: strList.size = " + strList.size());
}

方法二:

1
2
3
List<String> strList = new ArrayList<>();
List<Activity> acList = strList;
acList.add(activity);