如何运用反射获取new list对象(实体)的泛型?

    private ArrayList<TencentEntity> objects1 = new ArrayList<>();

    @Test
    public void test4() throws Exception {
        Field listField = this.getClass().getDeclaredField("objects1");
        System.out.println(listField.getGenericType());
        //获取 list 字段的泛型参数
        ParameterizedType listGenericType = (ParameterizedType) listField.getGenericType();
        Type[] listActualTypeArguments = listGenericType.getActualTypeArguments();
        for (Type listActualTypeArgument : listActualTypeArguments) {
            System.out.println(listActualTypeArgument);
        }
    }

运行结果:
java.util.ArrayList<com.example.test.test.genericity.one.TencentEntity>
class com.example.test.test.genericity.one.TencentEntity

通过反射获取该类的list字段,可以获取他的泛型。
但是如果 new 一个list,例:ArrayList objects2 = new ArrayList<>();
我使用了各种方法,都无法获得

    @Test
    public void test5() {
        ArrayList<BookEntity> objects2 = new ArrayList<>();
        objects2.add(new BookEntity("钢铁是怎样炼成的", 31.5));
        Type genericSuperclass = objects2.getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
        System.out.println(parameterizedType.getClass());
        System.out.println(parameterizedType.getOwnerType());
        System.out.println(parameterizedType.getRawType());
        System.out.println(parameterizedType.getTypeName());
        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
        for (Type actualTypeArgument : actualTypeArguments) {
            System.out.println(actualTypeArgument);
        }
        System.out.println(objects2);
    }

返回结果:
class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
null
class java.util.AbstractList
java.util.AbstractList
E
[BookEntity(bookName=钢铁是怎样炼成的, money=31.5)]