可以通过反射将String放入List中。
那什么是反射呢? 在运行过过程中
获取类的名称,方法,属性,注解,类型等。获取任意对象的方法,属性等。并且可以改变对象属性判断一个对象所属的类实例化任意一个类的对象
其实就是java提供的reflect包
回到一开始的那个问题,List list = new ArrayList<>()里面可以放String类型的数据吗?
很显然是可以的,因为list是一个对象,而反射可以获取对象的属性方法,并且改变对象属性。那我们就可以通过list.getMethod()方法获取list的add方法,然后将其参数改为String就可以保存String类型的数据。
具体的代码实现
@Test
public void test01() throws NoSuchMethodException
, InvocationTargetException
, IllegalAccessException
{
List
<Integer> list
= new ArrayList<>();
list
.add(3);
Class
<? extends List> aClass
= list
.getClass();
Method add
= aClass
.getMethod("add", Object
.class);
add
.invoke(list
,new String("老王"));
System
.out
.println(list
);
}